exception lors de l'analyse des données de formulaire multipartie
-
09-09-2019 - |
Question
Je suis en train de gérer un téléchargement de fichier, et j'utilise la classe com.oreilly.servlet.multipart.MultipartParser pour analyser le posté des données (en cos.jar). Cependant, quand je l'appelle le constructeur pour MultipartParser, je reçois ce exception:
java.io.IOException: Corrupt form data: premature ending
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:94)
Quelqu'un at-il vu cela auparavant? D'après ce que je lis, cela signifie que le données a pris fin avant de trouver la limite qu'il cherchait. Comment puis-je résoudre ce problème?
J'utilise la version 1.0 cos.jar.
Merci!
La solution 2
Alors, le problème a été causé par moi appelant le constructeur MultipartParser deux fois, par accident. Il a échoué la deuxième fois, puisque la demande avait déjà été traité.
Autres conseils
http://www.servlets.com/cos/faq.html
Cela indique qu'il y avait un problème analyse de la requête POST présentée par le client. Il peut y avoir de nombreuses causes pour le problème:
- Le client a frappé la touche STOP (pas vraiment un problème, mais il ne provoque une fin prématurée)
- Un bug dans le formulaire Web
- Un bug dans le servlet
- Un bug dans le serveur Web
- Un bug dans le navigateur
- Un bug dans la bibliothèque elle-même com.oreilly.servlet
L'histoire a montré le serveur Web pour être la cause la plus fréquente de problèmes probablement parce qu'il ya tant de différents serveurs et quelques fournisseurs semblent tester leur téléchargement binaire capacité.
Tout d'abord, assurez-vous que votre client n'est pas appuyer sur le bouton STOP. Puis vérifier si votre problème est déjà affiché sur les « bugs Servlet vous devez savoir A propos de » ressources sur ce site. Si c'est pas bien connu, alors vous être parmi les premiers à en apprendre davantage à ce sujet! Et vous pouvez partager votre découverte avec nous ici!
En second lieu, si le téléchargement fonctionne à l'aide la forme prévue et Upload.html DemoRequestUploadServlet.java classe. Certaines personnes ont trouvé des bugs dans leur forme qui a causé des problèmes. Essai cette combinaison si c'est l'affaire. Un utilisateur, Duke Takle, a trouvé cette exception a été causée par un redirect: Je ressentais la même « Fin prématurée », comme Albert Smith. Ce que j'ai trouvé est que le problème a été isolé à I.E. 5.0. le application qui me faisais troublé une redirection après la construction d'une MultipartRequest. Il ressemble à ceci la construction a bien sauf C.-À 5.0 le navigateur a tenté de faire à nouveau la demande et à ce moment la ServletInputStream était vide. J'ai modifié l'application simplement écrire la réponse à la place nécessaire de redirigeant. Ce problème a été observé et fixe comme décrit dans Tomcat 4.0 et Weblogic 6.1. D'autres utilisateurs ont bugs trouvés dans leur servlet de manutention où ils appellent request.getParameter () au lieu de multipartRequest.getParameter (), et certains serveurs lisent à tort l'entrée écouter lorsque leur getParameter () est appelé provoquant une « fin inattendue de partie ».