使用Apache Http异步客户端上载包含多部分POST请求的文件

我试图使用Apache HttpAsyncClient库作为multipart表单的一部分上载一个260k图像文件。

我通过这种方式创建我的表单:

val multipartEntityBuilder = new MultipartEntityBuilder
multipartEntityBuilder.addBinaryBody("file", file)
val multipartEntity = multipartEntityBuilder.build()

然后,我在执行请求时收到一个ContentTooLongException,这基本上是由于图书馆源代码中的这一行:https://github.com/apache/httpclient/blob/4.5.3/httpmime/src/main/java/org/apache/ HTTP /实体/ MIME / MultipartFormEntity.java#L102

我搜索了很多,但没有找到任何解释为什么contentLength的这个限制存在于代码中。 也许有人可以解释它? 我的第二个问题是:对大于25 kb的文件进行上传请求的正确方法是什么?

谢谢!


找到解决方案:通过文件创建inputStream并用BufferedHttpEntity包装多部分实体,然后传递这个缓冲的实体来请求:

val multipartEntityBuilder = MultipartEntityBuilder.create()
multipartEntityBuilder.addBinaryBody("file", new FileInputStream(file), ContentType.DEFAULT_BINARY, name)
val multipartEntity = multipartEntityBuilder.build()
val entity = new BufferedHttpEntity(multipartEntity)
链接地址: http://www.djcxy.com/p/22191.html

上一篇: Upload file with multipart POST request using Apache Http Async Client

下一篇: Component in Talend to upload a file to server that returns code other than 200