• 締切済み

javaサーブレット upload時

いつもお世話になっています。 javaサーブレットupload時で質問します。 http://www.ne.jp/asahi/hishidama/home/tech/apache/commons/fileup.html#processFormField と、 http://www.javaroad.jp/servletjsp/sj_servlet12.htm を参考にソースを作成してみたのですが、うまくurlを取得できません。 ソースは、 jsp側 <form method="POST" enctype="multipart/form-data" action="./UploadServlet"> ファイルpath: <input type="file" name="filefd" size=75"/> <br> ファイル名称: <input type="text" name="fileName" value=""> <br> <input type="submit" value="upload"/> </form> javaサーブレット(doGetは省く) public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (ServletFileUpload.isMultipartContent(request)) { // ファクトリー生成 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1426); factory.setRepository(new File("C:\\temp\\file_up")); //一時的に保存する際のディレクトリ ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(20 * 1024); upload.setFileSizeMax(10 * 1024); List items = new ArrayList(); try { items = upload.parseRequest(request); } catch (org.apache.commons.fileupload.FileUploadException e) { e.printStackTrace(); } // 全フィールドに対するループ for(int a=0;a<items.size();a++) { FileItem item = (FileItem) items.get(a); if (item.isFormField()) { // type="file"以外のフィールド processFormField(item); } else { // type="file"のフィールド processUploadedFile(item); } } } } private void processFormField(FileItem item) throws ServletException { System.out.println(item.getFieldName()); try { System.out.println(item.getString("MS932")); } catch (UnsupportedEncodingException e) { throw new ServletException(e); } } private void processUploadedFile(FileItem item) throws ServletException { System.out.println(item.getFieldName()); try { System.out.println(item.getString("MS932")); } catch (UnsupportedEncodingException e) { throw new ServletException(e); } } } このとき、 org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. C:\temp\file_up\upload__1fdbe80e_1279d42d9fc__8000_00000001.tmp (指定されたパスが見つかりません。) Caused by: java.io.FileNotFoundException: C:\temp\file_up\upload__1fdbe80e_1279d42d9fc__8000_00000001.tmp (指定されたパスが見つかりません。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at org.apache.commons.io.output.DeferredFileOutputStream.thresholdReached(DeferredFileOutputStream.java:165) at org.apache.commons.io.output.ThresholdingOutputStream.checkThreshold(ThresholdingOutputStream.java:221) at org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:127) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:101) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:64) at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:362) ... 16 more のエラーが発生します。 どこが悪いのでしょうか? 宜しくお願いします。

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

C:\temp\file_up このフォルダは存在している?

kannitiha
質問者

お礼

回答ありがとうございます。 勘違いしていました。 何とか、別の方法で解決できました。 本当にありがとうございました。 また、よろしくお願いします。