我遇到需要上传多个文件的情况。 浏览按钮将允许多个选择,然后它将显示文件列表。 然后,另一个按钮将执行实际上传。
每当用户尝试上传超过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的?
答案 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。