通过Apache HTTP Post接收文件时,标题会留在文件

时间:2017-12-07 20:20:52

标签: java apache http post apache-httpclient-4.x

我注意到当我使用以下库在Java应用程序中接收文件时:

compile group: 'org.apache.httpcomponents', name: 'httpcore-nio', version: '4.4.5'
compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.5'
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.2'
compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.5.2'

我注意到文件的顶部会有各种标题,例如

--dVb9w156wIo3LdB-AjdoAEyD0yNsn9
Content-Disposition: form-data; name="file"; filename="SendFile.html"
Content-Type: application/octet-stream

<!doctype html> <!-- now the actual file begins -->

我正在使用此构建器发送

HttpEntity requestEntity = MultipartEntityBuilder.create().setLaxMode()     
        .setContentType(ContentType.TEXT_HTML).addBinaryBody("file", out).build();

因此标题应位于laxMode() HttpMultipartMode.BROWSER_COMPATIBLE,并且实际上确实从文件本身中删除了一些标题,但Content-DispositionContent-Type仍然存在。

如何(在客户端)我写出来时,我如何确保只写文件的正文:

            try (OutputStream os = new FileOutputStream(tmp)) {
                e.writeTo(os);
                }

一些注意事项:

  • 服务器和客户端都是Apache HTTP Java applicatnois
  • 我认为这个问题是在接收端。当我发送NodeJS客户端文件时,我的NodeJS Express客户端似乎删除了这些头文件。
  • 我真的不想手动删除标题,应该有办法告诉Apache只有.writeTo()正文,而不是整个事情。

0 个答案:

没有答案