Tengo problemas con la carga de archivos HTTP con archivos de más de 2GB. Tanto el servidor como el cliente tienen 64 bits, por lo que no debe haber restricciones de 2 GB desde la perspectiva del sistema. Hice lo siguiente:Tomcat 6.0 Carga de archivos grandes (> 2 GB)
- En Apache LimitRequestBody = 0 (http://httpd.apache.org/docs/2.0/mod/core.html#LimitRequestBody)
- En Tomcat Conector MaxPostSize = 0 (http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html)
estoy usando Apache Commons carga de archivos. También traté de establecer el tamaño máximo de archivo usando el método ServerFileUpload setMaxFileSize.
Puedo cargar archivos de menos de 2GB (probé el archivo de 1.88GB con éxito). Por favor dirígeme, ¿qué es lo que echo de menos aquí?
Para ser más específico ServletFileUpload.parseRequest método devuelve 0 FileItems al cargar archivos de gran tamaño
Aquí está el fragmento de código:
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());
}
}
¿Cómo está utilizando exactamente la biblioteca apache? Muéstranos el código. –
Debe probar su servidor con una herramienta de línea de comando sin formato como "wget" para excluir cualquier problema del servidor: tamaño de archivo codificado como entero en algún lugar de la pila, límite del sistema de archivos ... –
¿Cuáles son los síntomas de su problema? La transferencia está bloqueada o detenida? Cualquier rastro de la pila del servidor? ¿Qué pasa con la actividad "en el cable"? Mírelo con wireshark. –