Tôi đang gặp sự cố với tải lên tệp HTTP với tệp lớn hơn 2GB. Cả máy chủ và máy khách đều có 64 bit nên không được giới hạn 2GB từ góc độ hệ thống. Tôi đã làm như sau:Tải lên tệp lớn Tomcat 6.0 (> 2 GB)
- Trong Apache LimitRequestBody = 0 (http://httpd.apache.org/docs/2.0/mod/core.html#LimitRequestBody)
- Trong Tomcat nối maxPostSize = 0 (http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html)
Tôi đang sử dụng apache upload commons tập tin. Tôi cũng đã cố gắng đặt kích thước tệp tối đa bằng phương pháp ServerFileUpload setMaxFileSize.
Tôi có thể tải lên tệp dưới 2 GB (tôi đã thử thành công tệp 1.88GB). Hãy chỉ đạo cho tôi, tôi đang thiếu gì ở đây?
Để có phương pháp cụ thể hơn ServletFileUpload.parseRequest trả về 0 FileItems khi tải lên tập tin lớn
Dưới đây là đoạn mã:
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());
}
}
Bạn sử dụng thư viện apache chính xác như thế nào? Hiển thị mã cho chúng tôi. –
Bạn nên kiểm tra máy chủ của mình bằng công cụ dòng lệnh thô như "wget" để loại trừ bất kỳ vấn đề nào của máy chủ: kích thước tệp được mã hóa dưới dạng Integer ở đâu đó trong ngăn xếp, giới hạn hệ thống tệp ... –
Các triệu chứng của sự cố của bạn là gì? Chuyển bị kẹt hoặc dừng? Bất kỳ dấu vết ngăn xếp máy chủ nào? Điều gì về hoạt động "trên dây" - nhìn vào nó với wireshark. –