Une servlet peut-elle déterminer si les données qui lui sont envoyées sont enctype = "multipart / form-data"?
J'ai une servlet qui est utilisé pour de nombreuses actions différentes, utilisées dans la Modèle de Contrôleur frontal. Personne ne sait si il est possible de dire si les données affichées à elle est enctype="multipart/form-data"? Je ne peux pas lire les paramètres de la requête jusqu'à ce que je décide, donc je ne peux pas envoie la demande à la bonne contrôleur.
Des idées?
source d'informationauteur pkaeding
Vous devez vous connecter pour publier un commentaire.
Oui, le
Content-type
en-tête de l'utilisateur demande de l'agent doit incluremultipart/form-data
comme décrit dans (au moins) le HTML4 spec:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
Si vous allez essayer à l'aide de la demande.getContentType() la méthode présentée ci-dessus, sachez que:
Avec cela à l'esprit, le chèque vous devez exécuter est :
Vous pouvez appeler une méthode pour obtenir le type de contenu.
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getContentType()
Selon http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2le type de contenu sera "multipart/form-data".
N'oubliez pas que:
demande.getContentType() peut renvoyer null.
demande.getContentType() peut ne pas être égal à "multipart/form-data", mais peut tout simplement commencer avec elle.
Donc, avec tout cela à l'esprit:
ServletFileUpload implémente isMultipartContent(). Peut-être que vous pouvez soulever cette mise en œuvre (plutôt que d'aller par la surcharge de créer un ServletFileUpload) pour vos besoins.
http://www.docjar.com/html/api/org/apache/commons/fileupload/servlet/ServletFileUpload.java.html
Vous aurez à lire les paramètres de la demande afin de déterminer, au moins sur certains niveau. Le ServletRequest classe a un getContentType méthode que vous aurez envie de regarder.