我是通过java中的multipartEntityBuilder上传文件的。 文件上传但被破坏,因为内容标题与文件中的数据混合在一起。
文本和图片格式的错误在pdf中正常工作。
HttpClient httpclient =new HttpClient();
HttpPut post = new HttpPut(uploadfileurl);
File file = new File(fileUrl);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("upfile", file, ContentType.DEFAULT_BINARY, "test.txt");
builder.addTextBody("text", message, ContentType.TEXT_PLAIN);
HttpEntity entity = builder.build();
post.setEntity(entity);
post.setHeader("enctype", "multipart/form-data");
HttpResponse httpresponse = httpclient.execute(post);
HttpEntity resEntity = httpresponse.getEntity();
文件错误:: 这应该是这样的:
此文件用于测试
但它会是这样的:
--------------- 1427465571114 内容处理:表格数据; NAME = “upfile”;文件名=“” Content-Type:application / octet-stream
此文件用于测试
--------------- 1427465571114 -
答案 0 :(得分:2)
httpresponse.getEntity().getContent()
它将返回InputStream
对象,您可以在其中尝试阅读内容。
答案 1 :(得分:0)
(BTW我正在使用Zip4J,如果有人想知道我的zip.getFile()调用)
顾名思义:传递多部分请求。
以下是为2个文件构建多部分标头的代码片段:
MultipartEntityBuilder mpeBuilder = MultipartEntityBuilder.create();
mpeBuilder.addBinaryBody(zip.getFile().getName(), zip.getFile());
mpeBuilder.addBinaryBody(zip.getFile().getName(), zip.getFile());
post.setEntity(mpeBuilder.build());
然后我可以在我的服务器上找到包含以下内容的文件:
--d_sc7jYe4LHAMikc1LbDw59Yz3pz_bn
Content-Disposition: form-data; name="temp.zip"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
BINARY GARBAGE
--d_sc7jYe4LHAMikc1LbDw59Yz3pz_bn
Content-Disposition: form-data; name="temp.zip"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
BINARY GARBAGE
--d_sc7jYe4LHAMikc1LbDw59Yz3pz_bn--
您可以想象这些标题和分隔符是为了分隔和标识数据。
所以,我想说这不是垃圾,你需要在服务器端处理这个问题,比如你想要以正确的方式保存2个文件。
如果您只想上传文件,则文档建议使用fileEntity:
post.setEntity(new FileEntity(zip.getFile()));
通过使用此实体,我的zip文件被发送到服务器而没有任何"损坏"