httpclient 4.+以上版本上传文件遇到的问题记录

在这周有个系统对接种要求采用Put上传文件
测试中获取本地file文件并上传的时候没有问题, 而通过前台接口选择文件传输到后台。在通过Http上传至文件服务器时发现异常情况


文件服务器上下载的文件

如图所示,下载到本地生成文件时二进制流中 会多处几行内容,这就很纳闷
原先代码采用的
multipartEntityBuilder.addBinaryBody("file", io);
HttpEntity entiy = multipartEntityBuilder.build();
httpClient.execute(httpPut)
进行的数据封装,之后进行请求下载文件,服务器返回的二进制流数据大小总是会比原先上传时的内容大!!
百思不得其解邮件编辑文件后发现二进制文件头尾多了一些内容。

经过一番捣鼓以后改成使用
BasicHttpEntity basicHttpEntity=new BasicHttpEntity();
basicHttpEntity.setContent(io);
再进行
httpClient.execute(httpPut);
问题完美解决。

原因:multipartEntityBuilder进行数据封装的时候会带上请求头尾(form表单提交的形式),执行请求的时候这些数据会带给服务端
改写成BasicHttpEntity将数据封装在请求体中进行传输。
再次下载的时候就不会多出头与尾的内容。通过下载请求得到的流转成byte[]数组可以直接返回给前台即可
至此问题解决........特此记录防止下次在遇到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景:项目中涉及到表单数据提交,其中还包含有图片。 关于如何保存图片,我一开始有两种思路: 将图片转换成二进制字节...
    EakonZhao阅读 5,573评论 0 0
  • 前言 超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了。Web服务,有网络功能的设备和网络计算的发...
    狂奔的蜗牛_wxc阅读 10,861评论 0 12
  • 一、文件上传 经常有人咨询上传文件的原理,并且反馈第三方框架 AFNetworking 在处理有些文件上传时无法胜...
    AlanGe阅读 5,836评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,213评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,596评论 0 11

友情链接更多精彩内容