2007年5月22日火曜日

JAVAのファイルアップロード最新版

なんか@ITのをコピったら古かったので調査



fileupload next版

参考:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28275&forum=12&2
--------------------------------------------------------
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;

public class UploadServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {

  File path = new File("c://test/");

  DiskFileItemFactory dfi = new DiskFileItemFactory();
  dfi.setRepository(path);  // 一時ファイルの保存先フォルダ
  dfi.setSizeThreshold(1024);  // バッファサイズ

  ServletFileUpload sfu = new ServletFileUpload(dfi);
  sfu.setSizeMax(-1);   // アップロードファイルの最大サイズ(-1は無限)
  sfu.setHeaderEncoding("Windows-31J"); // ヘッダの文字エンコーディング

  try {
   // アップロードされたファイル情報をFileItemオブジェクトのリストとして取得
   List objLst= sfu.parseRequest(request);
   Iterator objItr=objLst.iterator();

   // リストから順にファイルデータを取り出し、「/WEB-INF/data/元のファイル名」の形式でアップロードファイルを保存
   // 現在はテストで d://test/ に落ちる
   while(objItr.hasNext()){
    FileItem objFi = (FileItem)objItr.next();
    if(!objFi.isFormField()){
     // アップロードファイルの元ファイル名を取得
     String strNam = objFi.getName();
     if(strNam != null && !strNam.equals("")){
      strNam = (new File(strNam)).getName();
      objFi.write(new File(path + "/" + strNam));
     }
    }
   }
  } catch (FileUploadException e) {
   e.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  }
  // 処理後は元のupload.jspにリダイレクト
  response.sendRedirect("upload.jsp");
}
}


以上、これでエクリプスの警告もでなくなったのでOKなのかな、と



0 件のコメント:

コメントを投稿