IBM 기사 http://www-01.ibm.com/support/knowledgecenter/SS7K4U_7.0.0/com.ibm.websphere.web2mobile.mobile.application.services.help/ 에 따라 파일 업로드를위한 REST 채널을 구성했습니다 . docs / fileuploader_README.html? cp = SS7K4U_7.0.0 % 2F8-13-3 :
import org.apache.wink.common.model.multipart.BufferedInMultiPart;
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/upload")
public RestResult upload(BufferedInMultiPart bimp) {
List<InPart> parts = bimp.getParts();
// ....
}
요청이 완전히 처리되었는지 확인하기 위해 스트림의 테스트 소비를 추가했습니다.
IOUtils.copy(part.getInputStream(), new NullOutputStream());
약 100MB의 정말 큰 업로드로 전체를 테스트했습니다. Websphere 서버의 메모리 사용량이 급격히 증가하는 것을 확인했습니다. 적은 파일을 업로드하는 것보다 훨씬 더 큽니다. 업로드 후 내 upload
함수 를 호출하기 전에 업로드 된 파일이 메모리에 저장되어 발생한다고 가정 합니다.
큰 파일이 메모리 대신 임시 파일로 읽히도록 도구를 구성 할 수 있습니까?
아니면 REST 채널 메서드에서 직접 들어오는 입력 스트림이 될 수 있습니까?
Websphere 8.5 및 JAX-WS REST 채널을 사용하고 있습니다.
여기 에있는 Apache Wink 문서에 따르면 BufferedInMultiPart가 전체 파일을 메모리에 저장하는 것 같으므로 BufferedInMultiPart를 InMultiPart로 바꾸십시오.
import org.apache.wink.common.model.multipart.InMultiPart;
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/upload")
public RestResult upload(InMultiPart bimp) {
List<InPart> parts = new ArrayList<InPart>();
while(bimp.hasNext()) {
parts.add(bimp.next());
}
// ....
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다