I have this piece of code (I did not write, just supported):
public class MyMultipartResolver extends CommonsMultipartResolver{ public List parseEmptyRequest(HttpServletRequest request) throws IOException, FileUploadException { String contentType = request.getHeader(CONTENT_TYPE); int boundaryIndex = contentType.indexOf("boundary="); InputStream input = request.getInputStream(); byte[] boundary = contentType.substring(boundaryIndex + 9).getBytes(); MultipartStream multi = new MultipartStream(input, boundary); multi.setHeaderEncoding(getHeaderEncoding()); ArrayList items = new ArrayList(); boolean nextPart = multi.skipPreamble(); while (nextPart) { Map headers = parseHeaders(multi.readHeaders());
I am using commons-fileupload.jar version 1.2.1, and obviously the code uses some deprecated methods ...
Anyway, trying to use this code to download a very large file (780 MB), I get the following:
org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:983) at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:887) at java.io.InputStream.read(InputStream.java:89) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:94) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:64) at org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:593) at org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:619)
which is called from 'multi.discardBodyData ();' line.
My question is: How can I avoid this error and be able to successfully collect FileItems?
source share