commons-httpclient-3.0.1.jar
类:org.apache.commons.httpclient.methods.multipart.FilePart
获取文件名方法:
protected void sendDispositionHeader(OutputStream out)
throws IOException {
LOG.trace("enter sendDispositionHeader(OutputStream out)");
super.sendDispositionHeader(out);
String filename = this.source.getFileName();
if (filename != null) {
out.write(FILE_NAME_BYTES);
out.write(QUOTE_BYTES);
out.write(EncodingUtil.getAsciiBytes(filename));//这里中文肯定乱码
out.write(QUOTE_BYTES);
}
}
类:org.apache.commons.httpclient.methods.multipart.Part
...
protected void sendDispositionHeader(OutputStream out) throws IOException {
LOG.trace("enter sendDispositionHeader(OutputStream out)");
out.write(CONTENT_DISPOSITION_BYTES);
out.write(QUOTE_BYTES);
out.write(EncodingUtil.getAsciiBytes(getName()));//同上
out.write(QUOTE_BYTES);
}
如上所示,文件名不进行特殊处理,则官方默认使用Ascii编码,对英文以外的编码是个挑战,
所以需重写sendDispositionHeader方法,且不继承父类实现,方可实现中文文件名的正常上传,如下:
@Override
protected void sendDispositionHeader(OutputStream out) throws IOException {
// 实现基类Part方法
out.write(CONTENT_DISPOSITION_BYTES);
out.write(QUOTE_BYTES);
out.write(EncodingUtil.getBytes(getName(), "gbk"));//OK,通过
out.write(QUOTE_BYTES);
// 实现父类FilePart方法
String fileName = getSource().getFileName();
if (fileName != null) {
out.write(EncodingUtil.getAsciiBytes(FILE_NAME));
out.write(QUOTE_BYTES);
out.write(EncodingUtil.getBytes(fileName, "gbk"));//OK,通过
out.write(QUOTE_BYTES);
}
以上为3.0.1版本的操作,故寻至新版4.3.1,该头部实现已经修改,且无编码区别,官方实现如下:
protected void generateContentDisp(ContentBody body) {
StringBuilder buffer = new StringBuilder();
buffer.append("form-data; name=\"");
buffer.append(getName());
buffer.append("\"");
if (body.getFilename() != null) {
buffer.append("; filename=\"");
buffer.append(body.getFilename());
buffer.append("\"");
}
addField("Content-Disposition", buffer.toString());
}
故建议旧版切换即可
分享到:
相关推荐
总之,解决JMeter上传中文文件名乱码问题需要对JMeter的源代码有深入的理解,并能针对性地进行修改。通过确保正确处理文件名的编码,我们可以避免在测试过程中遇到的乱码困扰,从而提高测试的准确性和效率。
jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。
多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...
在Java编程中,使用FTPClient进行文件传输时,可能会遇到一个常见的问题,即当尝试创建中文目录或上传具有中文名称的文件时,这些目录名和文件名会显示为乱码,通常表现为“??”这样的形式。这个问题主要是由于FTP...
往往开发环境和生产环境在环境部署时会遇到很多奇怪的问题,此次word文档下载就被卡住了,通过一番努力终于...上传文件txt格式,内有方法详细的代码注释及原因说明,jar包比较常见,大家自行导入,希望可以帮到大家。
感谢你的下载,文件说明如下: *jsch的源文件 *jsch的依赖包 *用jsch源文件及依赖包构建的项目,便于修改其源码* ...如果乱码问题依然没解决,这个类也许能帮你找到你需要更改的编码类型。然后修改那三处地方。
标题中的“jspSmartUpload上传中文文件名乱码问题”是一个常见的技术挑战,特别是在处理Web应用程序时,特别是那些涉及用户上传文件的场景。JSP Smart Upload是早期流行的一个用于Java Web应用的文件上传组件,它...
通过上述实践和调试,我们已经成功解决了Struts2框架下中文文件名上传和下载的乱码问题。在遇到类似问题时,可以按照这些步骤进行排查和修复。记住,关键在于正确配置Struts2的拦截器、请求编码以及在处理文件名时...
### Java Web 开发中解决乱码问题的全面指南 #### 一、乱码问题概述 在Java Web开发过程中,乱码问题是开发者经常会遇到的问题之一。它通常发生在处理含有中文或其他非ASCII字符的数据时。本篇文章将详细介绍在...
sftp解决上传中文乱码,sftp.setFilenameEncoding("GBK");修改是不起作用的,修改源码后重新导出的jar包。
FORM表单中文乱码问题分析与解决 在 Web 开发中,中文乱码问题是一个常见的问题,尤其是在FORM表单传递参数时。这个问题的根本原因是对中文的编码与解码方式不一致。我们可以理解为对中文的加密与解密的密钥不一致...
总之,解决JSmartCom的中文文件名乱码问题,不仅需要深入理解JavaScript和HTTP的字符编码机制,还需要对JSmartCom的源码有充分的认识,以便定位和修改关键代码。通过以上所述的步骤和方法,你应该能够成功地克服这个...
经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...
通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。
使用jmeter5.4.3版本,通过修改PostWriter.java,两句代码,因为用了iso编码,修改成utf-8。ApacheJMeter_http.jar下载后,放到apache-jmeter-5.4.3\lib\ext路径下,替换原来的jar包,然后重启jmeter,PS:注意在http...
经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...
经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...
总的来说,解决中文文件名乱码问题需要从多个角度考虑,包括服务器配置、HTTP头部设置、编码转换以及选择合适的工具。了解并掌握这些知识点,有助于我们在实际工作中更顺畅地处理各种语言环境下的文件下载问题。对于...
本篇将详细探讨如何在Java环境下使用jQuery File Upload实现文件上传并处理中文文件名的乱码问题。 首先,jQuery File Upload的核心原理是利用HTML5的File API进行异步文件上传。它通过AJAX请求将文件分块上传到...
在IT行业中,文件上传是常见的功能之一,而SmartUpload是一个广泛使用的Java上传组件,它提供了强大的文件上传处理能力。然而,当处理包含中文字符的文件名时,SmartUpload可能会出现中文乱码问题,这给开发者带来了...