示例:使用httpclient4.2.5.jar 上传图片,后台servlet中使用commons-fileupload-1.3.jar 处理上传文件
注意版本问题:使用httpclient4.2.5,httpmime-4.2.5.jar,httpmime-4.2.5.jar上传后
后台:
ServletFileUpload upload = new ServletFileUpload(diskFactory);
List fileItems = upload.parseRequest(request);
fileItems的结果集始终等于0,然后测试采用jsp上传,发现上传控件<input type="file" name="d" />
中name属性不能为空,否则fileItems的结果集始终为0。
httpclient 调试的过程中发现,这个文件名是放在head里的
form-data; name="d"; filename="中心.jpg"{org.apache.http.entity.mime.FormBodyPart类中封装}
在org.apache.http.entity.mime.HttpMultipart类中调用了这个方法(需要修改源码):
private static void writeField( final MinimalField field, final OutputStream out) throws IOException {
writeBytes(field.getName(), out);
writeBytes(FIELD_SEP, out);
writeBytes(field.getBody(), out); // 此处没有进行charset 修改为writeBytes(field.getBody(),Charset.forName("UTF-8"), out);
writeBytes(CR_LF, out);
}
开始调用方式:
File file = new File("D:\\test\\upload\\中心.jpg");
HttpPost post = new HttpPost(“http://localhost:8088/WebService/a/d.do”);
MultipartEntity reqEntity = new MultipartEntity();
StringBody comment = new StringBody("A binary啦", Charset .forName(org.apache.http.protocol.HTTP.UTF_8));
reqEntity.addPart("a1", bin);
reqEntity.addPart("a2", comment);
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);
HttpEntity resEntity = response.getEntity();
说明在执行client.execute(post);的过程中会调用reqEntity.writeTo(OutputStream d);方法,方法如下
public void writeTo(final OutputStream outstream) throws IOException {
this.multipart.writeTo(outstream);
}
最后发现其实可以不用改源码的
MultipartEntity d = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,null,Charset.forName("UTF-8"));
HttpMultipartMode.BROWSER_COMPATIBLE 枚举值
因为程序默认是HttpMultipartMode.STRICT 所以走的是没有转化字符集的方法。
over
相关推荐
HttpClient4.2.5实现文件上传,无中文文件名乱码问题。亲测无问题。有问题可吐槽!
包含翻译后的API文档:httpclient-4.2.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.httpcomponents:httpclient:4.2.5; 标签:apache、httpcomponents、httpclient、中文文档、jar包、java; 使用...
HttpClient4.2.5的jar包
httpclient-4.2.5.jar
最新的httpclient-4.2.5jar 和httpcore-4.2.4jar 已压缩在jar包中(完整)
httpclient api 4.2.5 最新的文档 为方便离线查阅,制作成了chm格式与大家分享
httpcore-4.2.4,httpclient-4.2.5,httpclient-cache-4.2.5,httpmime-4.2.5的jar包下载。 比如微信退款需要以上jar包
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
包含翻译后的API文档:httpclient-4.2.5-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.httpcomponents:httpclient:4.2.5; 标签:apache、httpcomponents、httpclient、中英对照文档、jar包...
httpclient-4.2.5jar包,用于java通信,安全可靠,都可以用
2016-01-05 10:38 524,878 httpclient-4.2.5-sources.jar 2015-11-19 11:02 433,368 httpclient-4.2.5.jar 2016-01-22 09:23 435,628 httpclient-4.2.6.jar 2017-12-20 12:08 590,533 httpclient-4.3.5.jar 2017-12-...
解决HttpClient中文乱码问题jar文件
用于java请求时的相关jar资源,https 协议 在 http 基础上做了一次算法加密,但并不是完全安全的。我们可以通过躲避证书,绕过加密算法来获取数据。
https 协议 在 http 基础上做了一次算法加密,但并不是完全安全的。我们可以通过躲避证书,绕过加密算法来获取数据。 jar 包版本准确定位:httpcore-4.2.4.jar 和 httpclient-4.2.5.jar
httpclient-4.5.10.jar httpmime-4.5.13.jar httpcore-4.4.12.jar
下载这个工具类,然后直接调用createHtmlPage方法就可以了。最关键一点是,网上的方法没有一个解决了乱码问题,费了我不少功夫。
httpclient3 httpclient4 上传文件 乱码问题
很全面的代码介绍,很完整的乱码解决说明,让你一目了然,值得研究