Tomcat 6.0大文件上传(> 2 GB)

Sun*_*nil 5 java file-upload

我在使用大于2GB的文件上传HTTP文件时遇到问题.服务器和客户端都是64位,因此从系统角度来看,必须没有2GB的限制.我做了以下事情:

  1. 在Apache LimitRequestBody = 0(http://httpd.apache.org/docs/2.0/mod/core.html#LimitRequestBody)
  2. 在Tomcat Connector maxPostSize = 0(http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html)

我正在使用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 的文件,无需特殊配置。