Commons FileUpload でファイルアップロード
ファイルのアップロードで気をつけることは
「マルチパートということは、ファイル以外の部分もとんでくる」という大前提があり。
やること及び備考
- ファイルがアップロードされたらそれを元のファイル名でサーバのどっかに保存する
- 日本語ファイル名とか気にしてない
- エラー処理とかあんまり考えてない
サーブレットのdoGet一部
// マルチパートかどうか boolean isMultipart = ServletFileUpload.isMultipartContent(req); if (isMultipart) { // ここらへんはおきまりでせう FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> items = upload.parseRequest(req); Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { FileItem fitem = (FileItem) iter.next(); if (fitem.isFormField()) { // ファイル以外の部分 } else { // ファイルの部分 // ファイル名を取得。これはローカルのパスが入っている String fileName = fitem.getName(); if (fileName != null && !"".equals(fileName)) { // パスをとりのぞいてファイル名だけとるわざ。。こんなのあるらしい fileName = (new File(fileName)).getName(); // ファイルを保存 fitem.write(new File(fpath + File.separator + fileName)); } } } }
JSP(部分)
<form action="./fileUpload" method="post" enctype="multipart/form-data"> <input type="hidden" name="cmd" value="upload"> ファイル: <input type="file" name="filename" size="40"> <br> <input type="submit" value="アップロード"> </form>
昔に比べるとずいぶん簡単になったねえ・・