2017-11-02 64 views
0

こんにちは、私はJSFに新しいとprimefacessだと私は、画像をアップロードして、適切にすべてのコードパスを実行したときに私のプロジェクトのフォルダにアップロードとPrimeFacesを使用して画像を保存して、JSF

を、それを保存したいが、私は私が保存したイメージを見つけることができない保存ディレクトリを確認します。

// Javaコード プライベートUploadedFileファイル。

public UploadedFile getFile() { 
    return file; 
} 



public void setFile(UploadedFile file) { 
    this.file = file; 
} 



public void upload() { 
    if(file != null) { 
     try { 
       FacesContext context = FacesContext.getCurrentInstance(); 
       ServletContext scontext = (ServletContext)context.getExternalContext().getContext(); 
       String rootpath = scontext.getRealPath("/"); 
       File fileImage=new File(rootpath+"upload\\temp\\text.png"); 
       InputStream inputStream=file.getInputstream(); 
       SaveImage(inputStream,fileImage); 

       FacesMessage message = new FacesMessage(rootpath); 
       FacesContext.getCurrentInstance().addMessage(null, message); 
      } 
     catch(IOException e) { 
      e.printStackTrace(); 
      FacesMessage message = new FacesMessage("There was a probleme your file was not uploaded.",e.getMessage()); 
      FacesContext.getCurrentInstance().addMessage(null, message); 
     } 
    } 
} 

public void SaveImage(InputStream inputStream, File ImageFile) throws IOException { 
    OutputStream outputStream=new FileOutputStream(ImageFile); 
    IOUtils.copy(inputStream, outputStream); 
} 

// XHTMLコード

<h:form enctype="multipart/form-data"> 
    <p:growl id="messages" showDetail="true" /> 
    <p:fileUpload value="#{userBean.file}" mode="simple" skinSimple="true"/> 
    <p:commandButton value="Submit" ajax="false" actionListener="#{userBean.upload}" /> 
</h:form> 
+0

あなたはROOTPATHの値であるかどうか確認してくださいだろうか? –

+0

はい私はチェックして、私はあなたのファイルを手動でパスを入れたときに働いたので、私のために働いた –

+0

のフォルダにパスを追加しますか? –

答えて

1

あなたは\を使用しているときに、OSのあなたが実行されているので、それはあるかもしれないし、それがパスを正しく認識しない:

File fileImage=new File(rootpath+"upload\\temp\\text.png"); 

この行を次のように置き換えます。

File fileImage=new File(rootpath+"upload"+File.separator+"temp"+File.separator+"text.png"); 

これは、異なるプラットフォーム間でファイルパスを扱う場合に適しています。あなたが好きなFileUploadEventを使用してInputStreamを取得することができます

0

あなたは、このメソッドを使用することができます

InputStream in = event.getFile().getInputstream() ; 

public void upload(String fileName, String destination, InputStream in) { 
    try { 

     // write the inputStream to a FileOutputStream    
     OutputStream out = new FileOutputStream(new File(destination + "/" + fileName)); 
     int read = 0; 
     byte[] bytes = new byte[1024]; 

     while ((read = in.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 
     in.close(); 
     out.flush(); 
     out.close(); 
     System.err.println("New file created!"); 
    } catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 

} 
+0

彼はprimefacesからこれを使用できますか?ファイルのアップロードはプライムフェイスのためにこの方法では動作しません –

+0

あなたはそれを使用でき、私はそれを明確にするために編集しますコメントをありがとう –

関連する問題