拖放文件上传奇怪的行为

时间:2013-05-23 15:06:07

标签: file-upload primefaces

我正在使用Primefaces 3.5,我遇到了一个非常令人不安的问题。该组件在xhtml中显示如下:

<p:tab id="installApp" title="Install application">
        <h:form enctype="multipart/form-data">
        <p:panel header="Upload status" id="upld_status">
          <p:dataTable id="errorTable" var="error"
           value="#{applicationInstallerBean.uploadMsgs}">

           <p:column headerText="Application">
            <h:outputText value="#{error.filename}" />
           </p:column>

           <p:column headerText="Status">
            <h:outputText value="#{error.errorMsg}" />
           </p:column>

          </p:dataTable>        
        </p:panel>

        <p:remoteCommand name="clearPrevious" update="upld_status uploader" action="#{applicationInstallerBean.clearPrevious}" process="@this" />


        <p:fileUpload id="uploader" multiple="true" dragDropSupport="true" onstart="clearPrevious()"
                fileUploadListener="#{applicationInstallerBean.install}" uploadLabel="Install"
                mode="advanced" update="@this upld_status" auto="false"
                allowTypes="/(\.|\/)(zip)$/" styleClass="install_app_fileupload" />                 

        </h:form>
        <p:panel header="Help" toggleable="true">
            <ui:include src="applicationInstallHelp.xhtml" />
        </p:panel>
    </p:tab>

现在我遇到的行为很奇怪:

前几次,使用drag'n'drop方法上传文件工作正常。上传几次后,以下错误显得毫无疑问:

  • FileUpload组件在按下“上传”按钮后消失,仅在刷新页面时重新出现
  • onstart 方法在上传期间被多次调用
  • 当上传多个文件时,包含上传状态的表格不会刷新,或只有一个文件出现在那里
  • 我也从浏览器收到一条消息,说明该页面上正在运行脚本,我可以中止或继续

我尝试了什么:

删除 h:form 元素,因为这是索引文件中的include,其中已包含 h:form 元素

结果:基本相同,区别在于,首次将文件放到组件上会自动上传,但 auto 设置为false

我还尝试清空浏览器缓存,从头开始重新部署应用程序,关闭多个 ...所有这些都没有运气。

我上传的文件是80k到9mb。

从这一点来看,我认为上传太多文件会让整个事情变得疯狂,但我真的无法想到解决方案。任何帮助将不胜感激。

更新:在测试过程中,我发现 onstart 方法在第一次上传后总是会多次触发。它第一次只发射一次。在第二次上传大约7-10次,第三次似乎它一直开火直到我结束会话。这很奇怪,我认为这可能是问题的根源。关于这个的任何想法?

提前谢谢!

0 个答案:

没有答案