在p:fileUpload中完成多次上传?

时间:2013-12-23 16:16:14

标签: jsf file-upload primefaces

我有多个p:fileUpload,我需要在服务器上从1个文件上传到N个文件,上传后我需要知道上传了多少个文件,然后开始处理方法。我怎么知道所有文件上传的时间?我没有找到任何多次上传的事件,只有单个文件的事件,oncomplete中的p:fileUpload也适用于每个文件。我有意使用额外的按钮来调用处理方法,但这不安全,因为用户可以在上传所有文件之前按下此按钮。谁可以给我一些建议?

2 个答案:

答案 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)

您可以验证模式对话框,直到完成该过程,并在关闭它时结束。