0
开始上传的照片我使用JSF 2.2 PrimeFaces 6.0和我已经实现了一个解决方案,上传使用PrimeFaces.The问题p:fileUpload
组件是任何用户都可以上传,即使对于需求不经过证实的库文件图片一个commandButton
导致磁盘空间的浪费。 我需要为了帮助启动不通过PrimeFaces的p:fileupload
组件的上传按钮上传通过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;
}
}