Kann ein servlet bestimmen, ob die eingestellten Daten ist multipart/form-data?
Habe ich ein servlet, das wird für viele verschiedene Aktionen, die in der Front-Controller-pattern. Weiß jemand, ob es möglich ist, zu sagen, ob die Daten geschrieben, um es zurück ist enctype="multipart/form-data"? Ich kann nicht Lesen der request-Parameter, bis ich das entscheiden, so kann ich nicht Versand der Anfrage an den richtigen controller.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, die
Content-type
header in der Benutzer-agent die Anfrage sollte folgende Informationen enthaltenmultipart/form-data
wie beschrieben in (mindestens) der HTML4-Spezifikation:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
Wenn du gehst, zu versuchen, mit der Anfrage.getContentType() Methode, die oben präsentiert ist, werden Sie sich bewusst, dass:
Mit diesem im Verstand, die Prüfung, die Sie ausführen sollten, ist :
Können Sie eine Methode aufrufen, um die Inhalte geben.
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getContentType()
Laut http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2, den content-Typ "multipart/form-data".
Vergessen Sie nicht, dass:
Anfrage.getContentType() kann null zurückgeben.
Anfrage.getContentType() nicht gleich "multipart/form-data", sondern kann einfach anfangen.
So, mit all diesem im Hinterkopf:
ServletFileUpload implementiert isMultipartContent(). Vielleicht kann man diese Implementierung (im Gegensatz zu gehen durch den Aufwand zum erstellen einer ServletFileUpload) für Ihre Bedürfnisse.
http://www.docjar.com/html/api/org/apache/commons/fileupload/servlet/ServletFileUpload.java.html
Haben Sie zum Lesen der request-Parameter, um diese zu ermitteln, zumindest auf einige Ebene. Das ServletRequest-Klasse hat eine getContentType Methode, die Sie wollen, zu betrachten.
Erweitern awm129 Antwort - Apache-commons-Implementierung entspricht:
Schreiben Sie es viel kürzer, Apache-commons
org.apache.commons.lang3.StringUtils
:https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getParts()
java.util.Sammlung getParts()
Wirft:
ServletException - wenn diese Anforderung nicht vom Typ multipart/form-data