Tomcat 6.0 de Grandes Téléchargement de Fichier (> 2 GO)
Je suis d'avoir des problèmes avec HTTP upload de fichier avec les fichiers de plus de 2GB. À la fois le serveur et le client sont en 64 bits donc il doit y avoir aucune restriction de 2 GO à partir de la perspective du système. J'ai fait la suivante:
- Dans Apache
LimitRequestBody = 0 (http://httpd.apache.org/docs/2.0/mod/core.html#LimitRequestBody) - Dans Tomcat Connecteur
maxPostSize = 0 (http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html)
Je suis à l'aide d'apache commons de téléchargement de fichiers. J'ai aussi essayé de mettre le max de taille de fichier à l'aide de ServerFileUpload setMaxFileSize méthode.
Je suis en mesure de télécharger les fichiers de moins de 2 go de ram (j'ai essayé de 1,88 GO de fichiers avec succès). Merci de m'orienter, ce qui me manque ici?
Pour être plus précis ServletFileUpload.parseRequest méthode retourne 0 FileItems lors du téléchargement de gros fichiers
Voici l'extrait de code:
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());
}
}
Vous devez tester votre serveur avec un raw outil de ligne de commande comme "wget" pour exclure tout problème de serveur: la taille du fichier codé comme un Entier quelque part dans la pile, le système de fichier limite...
Quels sont les symptômes de votre problème ? Le transfert est coincé ou bloqué ? Un serveur quelconque trace de la pile ? Ce sujet de l'activité "sur le fil" - regarder avec wireshark.
C'est une excellente idée. Je vais faire quelques tests dès maintenant à l'aide de wget. Merci.
J'ai essayé de wget, je pense que le problème est avec la configuration d'Apache. J'ai LimitRequestBody mis à 0 en vertu de l'Annuaire de tag. Que dois-je vérifier dans apache?
OriginalL'auteur Sunil | 2012-03-03
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez commun-fileupload 1.1 ou vieux, alors vous ne pouvez pas télécharger de plus qu' (1.9888)~2 GO. Le problème ici, c'est cette jarre est l'appel d'une méthode appelée getContentLength qui est de type int, de sorte que votre demande ne peut traiter que de la taille jusqu'à l'Entier.MAX_VALUE. Dans la version la plus récente de la commune-fileupload 1.3 comme cela a été résolu.
Espérons que cette aide.
OriginalL'auteur Shahid
Certes, je peut de nouveau mal, mais je n'ai pas trouvé que même la version 64 bits du navigateur gérer les envois de plus de 2GB. Le problème n'est pas le serveur, mais le navigateur. Vous trouverez, curieusement, que la plupart des navigateurs modernes seront heureux de télécharger des fichiers de plus de 2GO à partir d'un serveur standard, aucune configuration particulière n'est nécessaire.
Salut, merci pour la référence, n'était pas au courant de ça. Mes commentaires sont basées sur l'expérience avec Apache 2.2, IE et Firefox au cours des dernières années. Il est bon d'entendre parler de google Chrome, je n'avais pas testé depuis un moment. Flash ne sera probablement pas vous aider que ce soit, vous devez envoyer les données en assez petits morceaux par rapport à un fichier volumineux, les choses deviennent beaucoup plus lent. Tous les services commerciaux que je suis conscient de ne ne peut pas supporter plus de 2 go, soit à moins d'utiliser leur logiciel client. Avec la bonne information d'en-tête, je ne vois aucune raison pour que Apache ne peut pas gérer ces fichiers. C'est le navigateurs handicap.
voici le lien vers mozilla entrée du bug
OriginalL'auteur Mike
Si vous attendez les uploads de fichier de ces tailles, je ne voudrais pas compter sur une droite navigateur télécharger. Une applet Java ou peut-être même un fichier Flash (pas sûr si possible, pas un Flash personne) serait ma recommandation, de sorte que vous pouvez briser les fichiers en morceaux. Si le téléchargement est interrompu, vous pouvez reprendre là où il a été laissé hors tension.
OriginalL'auteur StackOverflowed
OriginalL'auteur murwath