java - 无法使用 struts 2.0 框架上传 2gb 大小的文件

标签 java tomcat file-upload struts2 multipart

现在所有最新的浏览器,支持文件上传过程的 2 GB 大小限制, 现在我们在我们的应用程序中使用以下内容 Java, JSP, Struts 2.0 框架,我们无法上传2gb大小的文件,所以我在网上搜索,我能够找到struts中的struts.multipart.maxSize属性配置。 xml,我已将此值设置为 2gb 大小,我还在 tomcat server.xml 文件中设置了 maxPostSize 大小属性,以根据请求增加 postdata 大小。

我们仍然无法从浏览器上传 2gb 大小的文件。

请有人告诉我们,在 Apache 服务器、tomcat、struts 或浏览器中是否有可用的设置,然后让我们知道这些。

我们没有在文件上传操作中使用 fileUpload 拦截器

<action name="fileUpload" method="fileUpload" class="fileUploadAction">
<interceptor-ref name="check">
</interceptor-ref>
<result name="Errorjsp">tFrame.jsp</result>
<result name="insert">FileFrame.jsp</result>
</action>

并且我们的 java 端操作具有扁平的上传逻辑,在服务器端代码中没有文件大小限制验证。

我想知道大文件上传不上来的原因?

对于更多更新,我们发现在我们的环境中产生的问题是 CDN 网络。客户端通过浏览器请求将文件发送到cdn网络,然后cdn网络将这些文件发送到实际服务器。

问题仅在我们请求超过 2 GB 大小的文件时由于 cdn 网络而发生,因此它与浏览器问题无关。

问题不会发生在 cdn 网络上,当我们将文件字节到 block 发送到​​ cdn 网络时,意味着当我们使用一个 java 演示程序发送文件字节的 block 请求时。所以从这个分析中,我们可以说当我们以分块发送数据时,cdn 网络工作正常。

在我们的例子中,我们通过浏览器发送文件上传请求,所以我们不能发送分块请求,所以现在我的问题是,是否有任何技术或机制可用于解决我们的问题是否有可用的 js 或请求机制,哪个通过浏览器发送 block 字节请求?是否有任何其他技术可用于解决我们的问题?

感谢并问候 Yatin Baraiya

最佳答案

Struts2 允许您上传最大 2GB 的文件,即 maximum allowed size对于请求:

This setting defaults to approximately 2 megabytes and should be adjusted to the maximum size file (2 gigs max) that your will need the framework to receive.

为此,您需要同时设置:

  1. 设置通用 <constant name="struts.multipart.maxSize" value="2147483648" /> , 对于整体请求大小;

  2. 单个文件的最大大小设置 FileUpload Interceptor 参数,既可以在本地操作,也可以对包通用:

    <interceptor-ref name="fileUpload">
        <param name="maximumSize">2147483648</param>
    </interceptor-ref>
    

.2 是您配置中缺少的部分:目前,您可以发送 2 GB 的内容,但最大文件大小为 2 MB,例如。 1000 个文件,每个文件最大 2mb。

将上述设置应用于您的配置以使其工作,例如:

<action name="doUpload" class="com.example.UploadAction">
    <interceptor-ref name="defaultStack">
        <param name="fileUpload.maximumSize">2147483648</param>
    </interceptor>
    <result name="success">good_result.jsp</result>
</action>

关于java - 无法使用 struts 2.0 框架上传 2gb 大小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24525825/

相关文章:

在 Apache 代理后面嵌入 Tomcat 的 Spring Boot

java - Grails:验证文件上传

java - 如何在 Hibernate 上允许重复实体?

java - 计划任务响应 channel spring-integration

java - 如何修复找不到 Spring DispatcherServlet 类?

tomcat - 如何使 Tomcat 8 在端口 80 上工作并在 Internet 上提供内容

javascript - 使用 ng-file-upload 指令将文件上传到 sails.js 服务器

file-upload - 文件上传和 swf 转换工具 - 类似于幻灯片共享

java - 如果在打开资源后引发运行时异常 - 程序会关闭该资源吗?

Java 7 中的 Java 流