Servlet 3.0 File Upload 機能
2010年3月11日 at 10:33 午後 3件のコメント
Servlet 3.0 ではマルチパートデータを扱う事ができるようになったため、とても簡単にファイルアップロード機能を実現できます。
(表示用 HTML)
<html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″> <title>JSP Page</title> </head> <body> <FORM action=”/FileUpload/MyFileUpload” enctype=”multipart/form-data” method=”POST”> アップロードするファイル名: <INPUT type=”file” name=”content”> <INPUT type=”submit” value=”Submit”> </FORM> </body> </html> |
アップロードしたファイル名を取得するためには、getFilename() メソッドで実装しているように、ヘッダ:Content-Disposition の内容を取得しファイル名を抽出します。Content-Disposition ヘッダは下記のような値を含みますので、filename の部分を取得します。
Content-Disposition: form-data; name=”content”; filename=”FILE_NAME” |
また、@MultipartConfig のアノテーションを使用して、アップロードするファイルの上限や、配置場所等を設定します。
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; @WebServlet(name=”MyFileUpload”, urlPatterns={“/MyFileUpload”}) @Override private String getFilename(Part part) { |
簡単なメモ書き程度ですが、簡単にファイルアップロード機能を実装できる事が
お分かり頂けるかと思います。
本当は、Async Servlet を使って時間のかかるアップロード処理を非同期で
実現するコードも紹介したいのですが、一部動作がおかしく調査中ですので、
後日うまくいけば、ここに追記します。
Entry filed under: 未分類.
1.
曽根昭夫 | 2010年7月29日 2:44 午前
Asynchronous Servletの具体例をネット上で探しているのですが,現実的なものが少なく,簡単な例でも,glassfish v3/v3.01では
java.lang.IllegalStateException: Request is within the scope of a filter or servlet that does not support asynchronous operations
が返されてしまいます.3月に調査中とのでしたが,その後どうなったのでしょうか?
2.
Yoshio Terada | 2010年9月10日 10:51 午前
GlassFish の updatecenter から Java EE 6 のサンプルを入手して頂いた後、
NetBeans でプロジェクトを開き、デプロイして頂くと、サンプルの
チャットアプリケーションが動作します。
javaee6/web/servlet/async-request-war
ただし、日本語処理において問題がありますので、
ContentType のコードを下記のように変更して頂ければ
日本語も通るかと思います。
response.setContentType(“text/html; charset=UTF-8”);
どうぞ、サンプルよりお試しください。
3. Fileのアップロード | 2015年7月11日 12:51 午後
[…] https://yoshio3.com/2010/03/11/servlet-3-0-file-upload-%E6%A9%9F%E8%83%BD/ […]