使用Apache Http Async Client上传包含分段POST请求的文件

And*_*rey 1 java apache http multipart

我正在尝试使用Apache HttpAsyncClient库上传一个260k图像文件,作为多部分表单的一部分。

我以这种方式创建表单:

val multipartEntityBuilder = new MultipartEntityBuilder
multipartEntityBuilder.addBinaryBody("file", file)
val multipartEntity = multipartEntityBuilder.build()
Run Code Online (Sandbox Code Playgroud)

然后我基本上是因为库源代码中的这一行而在执行请求时收到ContentTooLongException:https : //github.com/apache/httpclient/blob/4.5.3/httpmime/src/main/java/org/apache/ http / entity / mime / MultipartFormEntity.java#L102

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

谢谢!

And*_*rey 5

找到了解决方案:在文件上创建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)
Run Code Online (Sandbox Code Playgroud)