使用Apache Http异步客户端

时间:2017-03-13 11:55:32

标签: java apache http multipart

我正在尝试使用Apache HttpAsyncClient库上传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/entity/mime/MultipartFormEntity.java#L102

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

谢谢!

1 个答案:

答案 0 :(得分:3)

找到解决方案:在文件上创建inputStream并使用BufferedHttpEntity包装multipart实体,然后将此缓冲实体传递给请求:

val multipartEntityBuilder = MultipartEntityBuilder.create()
multipartEntityBuilder.addBinaryBody("file", new FileInputStream(file), ContentType.DEFAULT_BINARY, name)
val multipartEntity = multipartEntityBuilder.build()
val entity = new BufferedHttpEntity(multipartEntity)