Jakarta ee 开始上载命令按钮上的文件单击

Jakarta ee 开始上载命令按钮上的文件单击,jakarta-ee,file-upload,primefaces,jsf-2.2,commandbutton,Jakarta Ee,File Upload,Primefaces,Jsf 2.2,Commandbutton,我使用的是jsf2.2 primefaces 6.0,我已经实现了一个上传文件的解决方案,并点击命令按钮确认需求。问题是,即使需求没有得到验证,每个用户都会上传文件,这会导致对存储库免费收费。 我想纠正这一点,只在用户点击命令按钮验证需求时上传文件 下面是Xhtml代码: <p:fileUpload fileUploadListener="#{imageUploader.handleFileUpload}" l

我使用的是jsf2.2 primefaces 6.0,我已经实现了一个上传文件的解决方案,并点击命令按钮确认需求。问题是,即使需求没有得到验证,每个用户都会上传文件,这会导致对存储库免费收费。 我想纠正这一点,只在用户点击命令按钮验证需求时上传文件

下面是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"/>

<p:commandButton update="@form" disabled="#{not facesContext.postback or facesContext.validationFailed}"
                    style="background:#6FDC6F;color: #FFFFFF;float:left"
                    styleClass="customStyleButton"
                    action="#{demandeBean.doAddDemande()}" value="confirmer demande">

                </p:commandButton>

为什么你把allowTypes=“/(\.\.\/)(gif | jpe?g | png)$/”放在bean中,但你的文件扩展名总是jpg?这有点错误,看了31次都没有回答!!!!
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);
            }
        }

    }