PrimeFaces FileUpload队列大小

时间:2017-08-16 09:26:50

标签: jsf file-upload primefaces

我遇到需要上传多个文件的情况。 浏览按钮将允许多个选择,然后它将显示文件列表。 然后,另一个按钮将执行实际上传。

每当用户尝试上传超过10个文件时,我都会收到错误消息。

问题是,当用户选择10个以上的文件(不一定全部一次)时,我有一个弹出窗口,我清空文件列表,但是10号以上的每个文件都会再次添加到列表中。这不应该发生,因为我希望每次捕获此异常时清空列表。

由于我无法设置队列大小或将其清空,所以我永远不会知道文件是第一组还是第11组

   public void handleFileUpload(
                FileUploadEvent e) {

            e.getComponent().setTransient(false);

            //stuffstuffstuff

            try{
                if(list.size()>=webApplicationConst.getMultipleUploadFileLimit())
                    throw new FrontEndException("File limit exceeded", log);
                else
                    list.add(file);
            }
            catch(FrontEndException LimitExcedeed){
            list.clear();

 this.openWarningDialog(MessageConst.MESSAGE_WARNING_DIALOG_TITLE_LIMIT_EXCEDEED    );
            }

        }

由于每个文件的onstart和oncomplite工作而不是每次上传(仍然想知道为什么btw),有没有办法知道队列大小,在我得到异常时清空它或者在不使用的情况下停止整个上传过程JavaScript的?

1 个答案:

答案 0 :(得分:0)

PrimeFaces 6.1用户指南提到了p:fileUpload的以下属性:

fileLimit          null   Integer   Maximum number of files allowed to upload.
fileLimitMessage   null   String    Message to display when file limit exceeds.

在用户点击“上传”之前,当用户选择的文件多于fileLimit时,会显示fileLimitMessage。

如果您想要更全面的限制,例如每个会话,然后将fileLimit属性绑定到bean中的属性:

fileLimit="#{myBean.sessionFileLimit}"

接收上传时,fileUploadListener会相应减少此限制。上载后更新p:fileUpload以更新客户端上的限制。当达到限制时,甚至可以添加disabled="#{myBean.sessionFileLimit == 0}"来完全禁用fileUpload。