我在使用大于2GB的文件上传HTTP文件时遇到问题.服务器和客户端都是64位,因此从系统角度来看,必须没有2GB的限制.我做了以下事情:
我正在使用apache commons文件上传.我还尝试使用ServerFileUpload setMaxFileSize方法设置最大文件大小.
我能够上传小于2GB的文件(我成功尝试了1.88GB文件).请指导我,我在这里错过了什么?
更具体的说,ServletFileUpload.parseRequest方法在上传大文件时返回0 FileItems
这是代码片段:
if (isMultipartForm()) {
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(SIZE_THRESHOLD);//SIZE_THRESHOLD = 4MB
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setFileSizeMax(3000000000L); Tried this too
upload.setProgressListener(progressListener);
items = upload.parseRequest(request);
if(items != null && items.size() == 0)
return new CommandResultSet(false, "NoItemsFoundInRequest");
return new CommandResultSet(true, "" + ( (items!=null) ? items.size() : ""));
} catch(FileUploadException e) {
e.printStackTrace();
System.out.println("Exception in MultipartFormManager. Can not parse request.");
return new CommandResultSet(false, e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
小智 1
我当然可能会犯新的错误,但我还没有发现即使是 64 位浏览器也能处理大于 2GB 的上传。问题不在于服务器,而在于浏览器。您会奇怪地发现,大多数现代浏览器都会乐意从标准服务器下载大于 2GB 的文件,无需特殊配置。