サーブレットでのマルチパート/フォームデータ解析について
質問:
受信処理時サーブレットでの multipart/form-data リクエストについて、手動でパーサーを実装せずにデータを簡単に読み取って解析するにはどうすればよいでしょうか?
答え:
Servlet 3.0 および上:
サーブレット バージョン 3.0 以降では、HttpServletRequest は、マルチパート データ パーツに名前で直接アクセスするための getPart メソッドを提供します。このメソッドを使用すると、データを HttpPart オブジェクトとして取得できるため、コンテンツ、ファイル名、コンテンツ タイプなどの情報に簡単にアクセスできます。
Pre-Servlet 3.0:
バージョン 3.0 より前のサーブレットの場合、Apache Commons FileUpload などのサードパーティ ライブラリを効果的に利用できます。 FileUpload ライブラリは、マルチパート リクエストを解析するための包括的なソリューションを提供し、開発者が個々のフィールドやファイルのアップロードなどにアクセスできるようにします。
Apache Commons FileUpload を使用した例:
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import javax.servlet.http.HttpServletRequest; public class MultipartParser { // Handle multipart requests using Apache Commons FileUpload public void parse(HttpServletRequest request) { try { ServletFileUpload upload = new ServletFileUpload( new DiskFileItemFactory()); List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (item.isFormField()) { // Process form field } else { // Process file upload } } } catch (Exception e) { e.printStackTrace(); } } }
注:
上記の例は Apache Commons FileUpload の使用を示していますが、パフォーマンスと使いやすさを向上させるために (Servlet 3.0 および Servlet 3.0 では) 可能な限り HttpServletRequest#getPart メソッドを利用することをお勧めします。上記の環境)。
以上がカスタム パーサーを作成せずに、サーブレットでマルチパート/フォーム データ リクエストを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。