我正在尝试使用ApacheHttpAsyncClient库将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
我搜索了很多,但没有找到任何解释,为什么这种对contentlength的限制出现在代码中。也许有人能解释一下?我的第二个问题是:对大于25kb的文件发出上载请求的正确方式是什么?
谢谢!
最佳答案
找到了解决方案:在文件上创建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)