Je gère un servlet à Tomcat 6.0.26. Le servlet accepte le téléchargement de fichier à partir du client par http Post. J'aimerais arrêter le téléchargement du fichier du côté httpServlet. J'ai essayé les méthodes suivantes sans chance: p>
J'ai googlé mais n'a trouvé aucune réponse directe. S'il vous plaît conseiller des solutions. P>
merci. p>
3 Réponses :
Ceci n'est pas possible en utilisant le servlet standard ni les API Filedupload Filedupload. Fondamentalement, pour pouvoir abandonner immédiatement la connexion, vous devez saisir la prise sous-jacente physiquement et la fermer. Cependant, cette prise est contrôlée par le serveur Web. Voir aussi cette question connexe: Comment Terminez explicitement la connexion HTTP du serveur sans en-tête de réponse . p>
Les petits tests ont toutefois confirmé que les Commons Filedupload ne tamponnent pas l'ensemble du fichier en mémoire lorsque sa taille dépasse la limite. Il lira le flux d'entrée, mais ignore et jetez simplement les octets de lecture (aussi ceux qui sont déjà lus). Donc, l'efficacité de la mémoire n'est pas nécessairement le problème ici. p>
Pour résoudre le problème réel, vous souhaitez valider la taille du fichier du côté client plutôt que le côté serveur. Cela est possible avec un applet Java ou une application Flash. Par exemple, respectivement Jumploader et
Voici quelques solutions de contournement folle: vous pouvez écrire (ou trouver quelque part) une application autonome de pare-feu basé sur des sockets qui gère la requête HTTP, analyser les en-têtes et si la demande correspond à certaines conditions personnalisées - le pare-feu en transmet à Tomcat, sinon renvoie http réponse d'erreur. Ou vous pouvez essayer d'accorder Apache <-> Tomcat avec certaines règles Apache. P>
Ce n'est pas possible en utilisant des API standard. Et vous enfreignez certaines normes de protocole / RFC si vous le faites. Alors, pourquoi feriez-vous cela? P>
Au lieu de cela, envoyez une "connexion: fermeture" (en-tête HTTP) sans corps HTTP. P>