- - PR -
commons-fileuploadについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-07-07 01:24
はじめましてはじめともうします。
common-fileuploadを利用したファイルアップロードクラスを 作成したいのですが、うまくいきません。 commons-fileuploadのServletのサンプル(doPostメソッド による処理)ではうまくいくのですが、目的としましては HttpServletRequest,HttpServletResponse以外のパラメータも 受け取りたいので(保存ファイル名称とDBの主キーを受け取り 指定ファイル名での保存とDB登録を内部でやってしまいたい) HttpServletのdoPostでは実現できないと思ったからです。 uploadClassの List objLst=objDfu.parseRequest(request); の値がnullになることまでは確認できましたが なぜそうなるのかが分からない状態です。 大変恐縮ですがご指摘・ご教授の程お願いします。 --------------------------------- Action --------------------------------- import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import test.uploadClass; public class testAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception { // アップロードクラスをインスタンス化 uploadClass uploadclass = new uploadClass(); // アップロードを実行 uploadclass.upload(request,response); return mapping.findForward("success"); } } --------------------------------- ActionForm --------------------------------- import org.apache.commons.fileupload.DiskFileUpload; import org.apache.struts.action.ActionForm; import org.apache.struts.upload.FormFile; public class testForm extends ActionForm{ private DiskFileUpload files; public DiskFileUpload getFiles() { return files; } public void DiskFileUpload (DiskFileUpload files) { this.files = files; } } --------------------------------- uploadClass --------------------------------- import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; public class uploadClass extends HttpServlet { public void upload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //String path = getServletContext().getRealPath("."); String path = new String("."); DiskFileUpload objDfu = new DiskFileUpload(); objDfu.setSizeMax(-1); objDfu.setSizeThreshold(1024); objDfu.setRepositoryPath(path); objDfu.setHeaderEncoding("Shift_JIS"); try { List objLst=objDfu.parseRequest(request); Iterator objItr=objLst.iterator(); 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(); } } } |
|
投稿日時: 2006-07-07 11:55
まず、よく意味がわからないのですが、Strutsを使っているのですよね?
でしたら、そもそもServletのdoPostを使うことはないと思うのですが。 Strutsを使っているのなら、FormFileクラスを使えばできると思うのですが、 使わない理由があるのですか? |
1