2

multipart/form-dataHTML フォームを使用して送信されたリクエストが enctypeか defaultかをサーブレットで認識するにはどうすればよいですapplication/x-www-form-urlencodedか?

または、どのフォームが使用されたかを認識する他の方法はありますか? request.getParameter("some_param")デフォルトのエンコーディングでのみ機能します。

4

2 に答える 2

1

Content-Type:ヘッダーを使用して識別できます

if(HttpServletRequest.getContentType().contains("form-data")){
   //handle multipart data
 ....
} else if(HttpServletRequest.getContentType().contains("x-www-form-urlencoded")){
   //handle from data
 ....
}

Web コンテナがServlet 3.0 をサポートしている場合は、HttpServletRequest.getParts() API を使用します。

if(request.getParts() !=null){
  //handle multipart
} else {
  //handle form data
}
于 2012-05-31T09:52:19.250 に答える
1

マルチパートに Apache Commons FileUpload を使用していますが、マルチパート フォームとデフォルト フォームの処理を切り替える方法がわかりませんでした。

Apache Commons FileUpload 独自のものServletFileUpload#isMultipartContent()を使用して確認します。

if (ServletFileUpload.isMultipartContent(request)) {
    // Parse with FileUpload.
}
else {
    // Use normal getParameter().
}

以下も参照してください。

于 2012-05-31T14:34:25.063 に答える