【问题标题】:t:inputFileUpload not submitting form when large file is submittedt:inputFileUpload 提交大文件时不提交表单
【发布时间】:2014-11-05 06:30:25
【问题描述】:

我正在使用 tomahawk 的文件上传组件,如下所示:

<t:inputFileUpload id="uploadFile" storage="file" size="60" value="#{"bean.uploadedFile}" />

web.xml 的过滤器定义为

  <filter>
        <filter-name>Extensions Filter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>uploadMaxFileSize</param-name>
            <param-value>5g</param-value>
        </init-param>
        <init-param>
            <param-name>uploadThresholdSize</param-name>
            <param-value>5m</param-value>
        </init-param>
    </filter>

另外,表单编码类型设置为“multipart/form-data”,使用“h:commandButton”提交。

现在,当我提供大于 1 GB 的文件时,表单提交根本不会发生。此外,我在控制台上看不到任何错误/异常。 1 GB 以下的文件会成功上传。

另一个奇怪的行为是,如果我将“uploadMaxFileSize”减少到“3g”,即使 1 GB 的文件也无法上传,但 512 MB 的文件会成功上传。

我为此苦苦挣扎了几天。请告诉我,如果有人知道这件事。

【问题讨论】:

  • POST 限制也取决于使用的容器。缺少有关容器 impl/version 的信息。
  • 应用服务器为 JBoss 7.2.0。 JSF 版本是 JSF 2.0 JDK 是 1.7
  • 我需要在哪里查找为 JBoss 指定的 POST 限制?
  • 仅供参考:“JSF 2.0”不是正确的 JSF 实现/版本信息。这只是一个规范。正确的 impl/version 示例是例如“莫哈拉 2.1.9”。这同样适用于“JDK 1.7”,正确的 impl/version 示例是“Oracle JDK 1.7.0_55”。
  • 哦,是的,谢谢。我正在使用 myfaces-2.1.8

标签: jsf file-upload tomahawk


【解决方案1】:

以 MB 而非 GB 为单位指定 uploadMaxFileSize。如果我将其指定为 2000m,它会正确拾取并允许上传最大 2GB 的文件,但如果将相同的值指定为 2g,则它不起作用。

这可能是 t:inputFileUpload 组件中关于它们如何验证文件大小的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多