従来、JSP/サーブレットにおいて、アップロード処理を実現するのは困難でした。というのも、JSP&サーブレットAPI、あるいはJavaコアAPIが標準で備えるライブラリには、アップロード処理に特化したライブラリが存在しなかったためです。そのため、アップロード機能をアプリケーションに組み込むには、POSTされた生のリクエストデータを解析し、ファイル名やその本体データを取り出すという処理を自分自身で行わなければならなかったのです。本稿では、その泥臭い作業手順については触れませんが、これが大変面倒なものであろうことは想像に難くないでしょう。
しかし、Jakarta Commonsサブプロジェクトから公開されているFileUploadライブラリを利用することで、従来の煩雑なアップロード処理の大半は軽減されます。論より証拠、早速具体的なサンプルコードを見てみることにしましょう。
解説
サンプルコードは、アップロードファイルをエントリするJSPページと、実際のアップロード処理を行うサーブレットクラスから構成されます。また、サーブレットクラスの動作にはデプロイメント・ディスクリプタ(web.xml)への登録が必須です。web.xmlへの設定については、連載:基礎から学ぶサーブレット/JSP(11)「JSPとサーブレットの違いを明らかにする」を参照してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
upload.jspから投入されたファイルが、アプリケーションルート配下の「/WEB-INF/data」フォルダにアップロード処理されれば成功です。
アップロード処理の詳細な流れについては、コード中のコメントを確認いただくとして、ここで1点注目していただきたいのは、ファイル名に日本語(2バイト文字)が混在している場合の処理です。ファイル名に日本語が含まれている場合には、そのままではアップロード後にファイル名が文字化けしてしまう可能性があります。必ずDiskFileUpload#setHeaderEncodingメソッドで使用している文字エンコーディング名を指定するのを忘れないようにしてください。
Copyright © ITmedia, Inc. All Rights Reserved.