2017-03-13 6 views
1

Apache HttpAsyncClient 라이브러리를 사용하여 멀티 파트 양식의 일부로 260k 이미지 파일을 업로드하려고합니다.Apache Http Async Client를 사용하여 다중 파트 POST 요청으로 파일 업로드

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보다 큰 파일에 대한 업로드 요청을하는 올바른 방법은 무엇입니까?

감사합니다.

답변

2

발견 용액 : 파일 위에 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)