2017-06-30 1 views
0

私はjsf 2.2 PrimeFaces 6.0を使用していて、すでにのPrimeFacesコンポーネントを使用して写真をアップロードするソリューションを実装しました。問題は、要求が確認されなくてもリポジトリにファイルをアップロードできることです。 commandButtonがあり、ディスク領域が浪費されます。 commandButtonでアップロードを開始するには、p:fileuploadのアップロードボタンではなく、PrimeFacesのコンポーネントを使用してファイルをアップロードしてください。CommandButtonで画像をアップロードする

ここではアプリケーションのプレビュー:upload files

ここでXHTMLコード:

<p:fileUpload 
          fileUploadListener="#{imageUploader.handleFileUpload}" 
          label="Ajouter" uploadLabel="Télécharger" cancelLabel="Annuler" 
          mode="advanced" auto="false" sizeLimit="10485760" multiple="true" 
          fileLimit="10" fileLimitMessage="Maximum 10 images" 
          dragDropSupport="true" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" 
          invalidFileMessage="Format de fichier non valide" invalidSizeMessage="Taille maximum 10 MB"/> 

ここでのJava Beanコード:

package utils; 

import java.io.FileOutputStream; 
import java.util.UUID; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.ViewScoped; 
import javax.faces.context.FacesContext; 

import org.primefaces.event.FileUploadEvent; 
import org.primefaces.model.UploadedFile; 

import mBeans.DemandeBean; 

@ManagedBean 
@ViewScoped 
public class ImageUploader { 
    private UploadedFile uploadedFile; 
    @ManagedProperty(value = "#{demandeBean}") 
    private DemandeBean demandeBean; 


    public void handleFileUpload(FileUploadEvent event) { 
     uploadedFile = event.getFile(); 
     String shortImagePath = UUID.randomUUID().toString() + ".jpg"; 

     if (uploadedFile != null && uploadedFile.getContents() != null) { 
      try { 

       byte[] contents = uploadedFile.getContents(); 
       FileOutputStream fos = new FileOutputStream(DirectoryInitilizer.IMAGE_DIR + "/" + shortImagePath); 
       fos.write(contents); 
       fos.close(); 

       demandeBean.getImages().add(shortImagePath); 
       FacesMessage message = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded."); 
       FacesContext.getCurrentInstance().addMessage(null, message); 

      } catch (Exception e) { 
       FacesMessage message = new FacesMessage("pb", event.getFile().getFileName() + " is not uploaded."); 
       FacesContext.getCurrentInstance().addMessage(null, message); 
      } 
     } 

    } 

    public UploadedFile getUploadedFile() { 
     return uploadedFile; 
    } 

    public void setUploadedFile(UploadedFile uploadedFile) { 
     this.uploadedFile = uploadedFile; 
    } 

    public DemandeBean getDemandeBean() { 
     return demandeBean; 
    } 

    public void setDemandeBean(DemandeBean demandeBean) { 
     this.demandeBean = demandeBean; 
    } 

} 

答えて

0

私はあなたが

ような何かをすることができると思います

ボタン:

<p:commandButton ... 
       oncomplete="if(args &amp;&amp; !args.validationFailed) {PF('fileuploadwidgetvar').upload();}" 
/> 
関連する問題