トップ 新規 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

JSPの実際:ファイルのアップロード

Servlet3.0以降の例

  • serlvet.FileUploadServlet.java

ファイルが存在しません。JSPの実際:ファイルのアップロード

  • uploader/upload.jsp

ファイルが存在しません。JSPの実際:ファイルのアップロード


Commonsのライブラリを使う例

 アップロードの準備(ライブラリの設定)

Jakarta Commonsのライブラリ

Jakarta Commonsの使い方

  • JavaDoc API http://commons.apache.org/fileupload/apidocs/
  • DiskFileItemFactoryクラス
    • ファイルのアップロードがされるさいのメモリのバッファや一時ファイルを管理するクラス。大きなファイルのアップロードがされる場合にはもちろんきちんと設定すべきであるが、そうでない場合でも利用者が大きなファイルを誤ってアップロードすることが想定されるため、きちんと設定した方がよい。
    • setRepository(File repository)メソッド
      • 一時ファイルを指定するメソッド。最終的に保存される場所ではないのに注意する。
  • ServletFileUploadクラス
    • multipart/form-dataなどを抽象化して普通に扱うことができるようにしているクラス。ファイルの最大サイズなどの指定はこのクラスに対して行う。
    • isMultipartContent(Request request)メソッド
      • 引数で指定されたリクエストにmultipartデータが含まれるかを返す。ファイルのアップロードがされるフォームの場合には原則的にmultipart/form-dataであるため、このメソッドを使うことでアップロードされるファイルがあるかを識別することができる。
    • setHeaderEncoding(String encoding)メソッド
      • 引数で指定された文字コードでヘッダのパースを行う。指定されない場合、requestの文字コードが指定される。ページを表示する文字コードと合わせることでファイル名の文字化けが防げる場合が多い。
    • setSizeMax(long sizeMax)メソッド
      • アップロードできるリクエストの最大サイズを指定する。全体の大きさを指定することになる点が、以下のsetFileSizeMax()メソッドとは異なる。
    • setFileSizeMax(long sizeMax)メソッド
      • アップロードできる一ファイルの最大サイズを指定する。
  • FileItemインタフェース
    • isFormField()メソッド
      • falseの場合、アップロードされたデータであることを示す。
    • write(File file)メソッド
      • アップロードされたファイルを引数で指定されたファイルに書き出す。

 アップロード用フォーム

  • アップロードされるファイルはフォームデータとしては大きすぎることもあるため、formタグのenctype属性を"multipart/form-data"に設定し、データを分割して送信することになる。そのため、一般的なリクエストパラメータとは異なり、分割されたデータの統合が必要になる。ここではJakarta CommonsのFileUploadライブラリを用いることで、その部分の面倒な処理をライブラリに任せる形で処理を行う。
  • ファイルアップロードのinputタグはtype属性を"file"に設定することで、アップロードするファイルの参照ボタンも自動的に付与される。
  • formとinputタグの書式
<form 〜 enctype="multipart/form-data">
   <input type="file" 〜 />
</form>

 ファイルアップロードの例1:単なるアップロード

  • アップロードされたファイルの名前を表示し、もしテキストファイルならばその内容を表示する

ファイルが存在しません。JSPの実際:ファイルのアップロード

 ファイルアップロードの例2:ファイルリストの表示

  • ファイルの置き場所を作成し、アップロードされたファイルをその場所に追加していく。もし、すでにファイルがアップロードされている場合にはファイルリストを表示する。

ファイルが存在しません。JSPの実際:ファイルのアップロード

 ファイルアップロードの例3:アップロードされたファイルのダウンロード

  • ファイルの置き場所を作成し、アップロードされたファイルをその場所に追加していく。もし、すでにファイルがアップロードされている場合にはファイルリストを表示する。ファイルリストのファイル名部分にリンクを張り、そのリンクからファイルのダウンロードができる。

ファイルが存在しません。JSPの実際:ファイルのアップロード

 参考リンク


 課題

  1. ファイルアップロードの例2を改良し、ファイルの更新日を例えば"2009/01/18 10:05:04"("年/月/日 時:分:秒")という形で表示するようにしなさい。
  2. ファイルアップロードの例2を改良し、同じファイルをアップロードした場合にファイルの上書き確認をするようにしなさい。

最終更新時間:2013年07月02日 06時26分21秒