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

use*_*815 6 jsf file-upload primefaces

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

Mik*_*bel 14

对于可能面临同样问题的其他人.

文件上载组件具有'files'属性,其中包含要上载的文件列表.一旦上传文件就会从'files'数组中删除,因此当上传最后一个文件时,'files'将为空.这可用于检测上载最后一个文件的时刻.之后,您可以触发远程命令来执行任何操作.

代码示例:

<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>
Run Code Online (Sandbox Code Playgroud)


小智 -1

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