gpt4 book ai didi

java - apache.commons.fileupload 抛出 MalformedStreamException

转载 作者:行者123 更新时间:2023-11-29 09:23:45 26 4
gpt4 key购买 nike

我有这段代码(我没写,只是在维护):

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());
// String fieldName = getFieldName(headers);

String subContentType = getHeader(headers, CONTENT_TYPE);
if (subContentType == null) {
FileItem item = createItem(headers, true);
OutputStream os = item.getOutputStream();
try {
multi.readBodyData(os);
} finally {
os.close();
}
items.add(item);
} else {
multi.discardBodyData();
}

nextPart = multi.readBoundary();
}

return items;
}
}

我正在使用 commons-fileupload.jar 1.2.1 版,显然代码使用了一些已弃用的方法...
无论如何,在尝试使用此代码上传一个非常大的文件 (780 MB) 时,我得到了这个:

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)

从“multi.discardbodyData();”抛出行。
我的问题:如何避免此错误并能够成功收集 FileItems?

最佳答案

捕获

(org.apache.commons.fileupload.MultipartStream.MalformedStreamException e)
{

e.printStackTrace();

return ERROR;
}

捕获异常并通过 ..InputStreamReturn Error 在 struts action 标签中使用它来处理它

关于java - apache.commons.fileupload 抛出 MalformedStreamException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4451466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com