我有多个p:fileUpload
,我需要在服务器上从1个文件上传到N个文件,上传后我需要知道上传了多少个文件,然后开始处理方法。我怎么知道所有文件上传的时间?我没有找到任何多次上传的事件,只有单个文件的事件,oncomplete
中的p:fileUpload
也适用于每个文件。我有意使用额外的按钮来调用处理方法,但这不安全,因为用户可以在上传所有文件之前按下此按钮。谁可以给我一些建议?
答案 0 :(得分:14)
对于可能面临同样问题的其他人。
文件上传组件包含'文件'包含要上载的文件列表的属性。上传后的文件会立即从'文件中删除。数组,因此当上传最后一个文件时,'文件'将是空的。这可用于检测上载最后一个文件的时刻。之后,您可以触发远程命令来执行任何操作。
代码示例:
<h:form enctype="multipart/form-data">
<p:fileUpload id="files"
widgetVar="fileUploadWidget"
mode="advanced"
multiple="true"
oncomplete="handleMultiFileUploadRequest(PF('fileUploadWidget'), validateFiles);"/>
<p:remoteCommand name="validateFiles" actionListener="#{Your action}"/>
<script type="text/javascript">
function handleMultiFileUploadRequest(fileupload, remoteButton) {
if (fileupload.files.length === 0) {
if (remoteButton) {
remoteButton();
}
}
}
</script>
</h:form>
答案 1 :(得分:0)
您可以验证模式对话框,直到完成该过程,并在关闭它时结束。