2012-04-08 22 views
0

イメージをアップロードしてフォルダに保存するようにアプリケーションをプログラミングしようとしています。ファイルの詳細を表示しますが、フォルダには保存しません。私はここでユーザガイドと回答に従っていますが、私は何が間違っているのかまだ分かりません。ファイルをアップロードしてフォルダに保存していますか?

import java.io.File; 
import java.util.List; 

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

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

public class UploadAvatarCommand implements Command { 

    @Override 
    public String execute(HttpServletRequest request, 
      HttpServletResponse response) { 

     DiskFileItemFactory factory = new DiskFileItemFactory(); 
     String contextRoot = request.getServletContext().getRealPath("/"); 
     factory.setRepository(new File(contextRoot + "WEB-INF/tmp")); 
     ServletFileUpload upload = new ServletFileUpload(factory); 

     try { 
      List<FileItem> items = upload.parseRequest(request); 
      for (FileItem item : items) { 
       if (!item.isFormField()) { 
        // Process form file field (input type="file"). 
        System.out.println("Field name: " + item.getFieldName()); 
        System.out.println("File name: " + item.getName()); 
        System.out.println("File size: " + item.getSize()); 
        System.out.println("File type: " + item.getContentType()); 

        String fileName = item.getName(); 
        try { 
         File saveFile = new File(fileName); 
         saveFile.createNewFile(); 
         item.write(saveFile); 
        } catch (Exception e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      } 
     } catch (FileUploadException e) { 
      try { 
       throw new ServletException("Cannot parse multipart request.", e); 
      } catch (ServletException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
     } 

     return "profile"; 
    } 

} 
+0

コンソールにfileNameとsaveFile.getPath()を出力してください。ファイルはどこを探していますか? – rickz

+0

いくつかの例外がありますか?あなたはファイルをどのようにアップロードしますか? – dash1e

答えて

0

あなたは、コードのこの部分を任意のエラーを持っていない場合:

File saveFile = new File(fileName); 
saveFile.createNewFile(); 
item.write(saveFile); 

は名前fileNameで新しいファイルを作成します(つまり、「file.txtは」のような単純な名前です)現在のフォルダにあります。

あなたの現在のワークフォルダがこれを印刷しようとしているかを知りたい場合は、次の

System.out.println("Current folder: " + (new File(".")).getCanonicalPath()) 

ファイルはここにいる場合ので、あなたは確認することができます。お好みのフォルダのパスを

File saveFile = new File("/my/upload/folder",fileName); 

と置換「/私/アップロード/フォルダ」:

は、その後、あなたはあなたが使用することができます希望のフォルダにファイルを入れたい場合。

+0

'new File("。 "))。getCanonicalPath()はEclipseのルートフォルダを表示します。ワークスペース(Eclipseフォルダにない)のプロジェクトフォルダに画像を保存する方法はありますか? – Jonathan

+0

どこにファイルを置いておきたいのかを見てください__ "私はあなたにそれを行う方法を説明します。 – dash1e

+0

ええ、私はそれを得た。これは、 'new File(" ../Workspace/Project2/My_Application/WebContent/images/"+ fileName);ですが、私がアプリケーションをプロダクションサーバーに移動したときに、より保守性の良い方法はありませんか? – Jonathan

関連する問題