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

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

作者: 正义的米卡塔 | 来源:发表于2020-11-28 19:51 被阅读0次

    在这周有个系统对接种要求采用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[]数组可以直接返回给前台即可
    至此问题解决........特此记录防止下次在遇到

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ltecwktx.html