gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:36 24 4
gpt4 key购买 nike

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

  1. 在 Apache LimitRequestBody = 0 ( http://httpd.apache.org/docs/2.0/mod/core.html#LimitRequestBody )
  2. 在 Tomcat 连接器中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());
}
}

最佳答案

如果您使用的是 common-fileupload 1.1 或旧版本,则您上传的文件不能超过 (1.9888)~2GB。这里的问题是这个 jar 正在调用一个名为 getContentLength 的方法,它是 int 类型的,因此您的请求只能处理最大为 Integer.MAX_VALUE 的大小。在最新版本的 common-fileupload 中,如 1.3,这已得到解决。希望这会有所帮助。

关于java - Tomcat 6.0 大文件上传(> 2 GB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9543127/

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