10

フロントコントローラーパターンで使用される、さまざまなアクションに使用されるサーブレットがあります。投稿されたデータがenctype="multipart / form-data"であるかどうかを判断できるかどうか誰かが知っていますか?これを決定するまでリクエストパラメータを読み取ることができないため、適切なコントローラにリクエストをディスパッチできません。

何か案は?

4

7 に答える 7

21

上記の request.getContentType() メソッドを使用する場合は、次のことに注意してください。

  1. request.getContentType() は null を返す場合があります。
  2. request.getContentType() は「multipart/form-data」と等しくない場合がありますが、それで始まる場合があります。

これを念頭に置いて、実行する必要があるチェックは次のとおりです。

if (request.getContentType() != null && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1 ) {
// Multipart logic here
}
于 2009-02-23T21:47:22.557 に答える
17

はい、ユーザー エージェントのリクエストのヘッダーには、(少なくとも) HTML4 仕様で説明されているようにContent-type含める必要があります。multipart/form-data

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

于 2008-09-15T20:13:58.147 に答える
8

メソッドを呼び出して、コンテンツ タイプを取得できます。

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

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2によると、コンテンツ タイプは「multipart/form-data」になります。

次のことを忘れないでください。

  1. request.getContentType() は null を返す場合があります。

  2. request.getContentType() は「multipart/form-data」と等しくない場合がありますが、それで始まる場合があります。

したがって、これらすべてを念頭に置いて:

if (request.getContentType() != null && 
    request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1 ) 
{
    << code block >>
} 
于 2008-09-15T20:17:15.500 に答える
3

ServletFileUpload は isMultipartContent() を実装しています。おそらく、必要に応じてこの実装を持ち上げることができます (オーバーヘッドを介して ServletFileUpload を作成するのではなく)。

http://www.docjar.com/html/api/org/apache/commons/fileupload/servlet/ServletFileUpload.java.html

于 2011-08-10T12:54:31.567 に答える
1

これを判断するには、少なくともある程度はリクエスト パラメータを読み取る必要があります。ServletRequest クラスには、注目すべき getContentType メソッドがあります。

于 2008-09-15T20:19:39.037 に答える