#author("2024-01-29T08:37:10+00:00","","")
#author("2024-01-29T08:37:13+00:00","","")
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Commons FileUpload パッケージは、サーブレットなどWEB環境にファイルアップロード機能を実装したいときに使用します。

**ダウンロード [#l1bd0b11]
http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/fileupload/binaries/ よりダウンロードできます。2007/02/24現在の最新版は[[commons-fileupload-1.2-bin.tar.gz>http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/fileupload/binaries/commons-fileupload-1.2-bin.tar.gz]]です。また、[[Dependencies>http://jakarta.apache.org/commons/fileupload/dependencies.html]]を見ると[[commons-io>http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/io/]]が必要みたいですね。

**やってみる [#j0ec62e6]
  protected void doPost(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    // Create a factory for disk-based file items
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // Set factory constraints
    factory.setSizeThreshold(4096);
    // factory.setRepository(new File("/tmp"));
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
 
    // Set overall request size constraint
    upload.setSizeMax(-1);
    // Parse the request
    try {
      List<FileItem> items = upload.parseRequest(request); <-パラメタのList
      for (FileItem item : items) {
        System.out.println("item: " + item);
        if (item.isFormField()) {
          processFormField(item);
        } else {
          processUploadedFile(item);
        }
      }
    } catch (FileUploadException e) {
      e.printStackTrace();
    }
  }
 
  private void processFormField(FileItem item) {
    String name = item.getFieldName();
    String value = item.getString();
    System.out.println(name + " : " + value);
  }
 
  private void processUploadedFile(FileItem item) {
    File uploadedFile = new File("c:/", item.getName());
    try {
      item.write(uploadedFile); //ファイル書き込み
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
このように、
 List<FileItem> items = upload.parseRequest(request);
このメソッドを呼ぶことで、parameterとそのvalueの対のFileItemを取得できます((item.isFormField()だったら普通のパラメタ。そうでなかったらアップロードファイル))。あとはこのFileItemを使って
 File uploadedFile = new File("c:/", item.getName());
 try {
     item.write(uploadedFile);
 } catch (Exception e) {
     e.printStackTrace();
 }
とすることでファイルを書き出すことができます。


**ファイルをバイト列のまま取得する [#z608f13a]
 byte[] data = item.get();
でファイルをバイト列のまま取得することもできます。







**関連リンク [#d082e1de]
-[[Commons FileUpload>http://jakarta.apache.org/commons/fileupload/]]


----
この記事は
#vote(おもしろかった[12],そうでもない[8])
#vote(おもしろかった[12],そうでもない[9])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS