2008-09-15 1 views
9

Ich habe ein Servlet, das für viele verschiedene Aktionen verwendet wird, die in der Front Controller pattern verwendet werden. Weiß jemand, ob es möglich ist, zu sagen, ob die zurückgesendeten Daten enctype = "multipart/form-data" sind? Ich kann die Anfrageparameter erst lesen, wenn ich dies entschieden habe, sodass ich die Anfrage nicht an die richtige Steuerung senden kann.Kann ein Servlet feststellen, ob die Daten, die an es gesendet werden, enctype = "multipart/form-data" sind?

Irgendwelche Ideen?

Antwort

8

Sie können eine Methode aufrufen, den Inhaltstyp zu erhalten.

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getContentType()

Nach http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2, wird der Inhaltstyp "multipart/form-data" sein.

Sie das nicht vergessen:

  1. request.getContentType() kann null zurück.

  2. request.getContentType() ist möglicherweise nicht gleich "multipart/form-data", kann aber damit beginnen.

Also, mit all dies im Sinn:

if (request.getContentType() != null && 
    request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1) 
{ 
    << code block >> 
} 
+1

Kyle, du hast deine Antwort geändert, nachdem ich die * richtige * Antwort eingereicht habe. Vielleicht wäre es zumindest cool, auf diese Tatsache zu verweisen ... –

1

Hier finden Sie die Anfrageparameter, um dies zu bestimmen, haben zu lesen, zumindest auf einige Ebene. Die ServletRequest-Klasse verfügt über eine getContentType-Methode, die Sie untersuchen möchten.

15

Wenn Sie versuchen wollen, die request.getContentType() -Methode oben dargestellt verwendet wird, beachten Sie, dass:

  1. request.getContentType() null zurückkehren.
  2. request.getContentType() darf nicht gleich zu "multipart/form-data" sein, aber kann damit beginnen.

Vor diesem Hintergrund ist die Überprüfung sollten Sie laufen:

if (request.getContentType() != null && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1) { 
// Multipart logic here 
} 
Verwandte Themen