【问题标题】:Struts 2 convention plugin - upload a file of more than 2 MBStruts 2 约定插件 - 上传超过 2 MB 的文件
【发布时间】:2013-06-04 21:12:14
【问题描述】:

如果我尝试上传大小超过 2 MB 的文件,则会出错。

我在 apache 网站上发现“有两个单独的文件大小限制。首先是 struts.multipart.maxSize,它来自 Struts 2 default.properties 文件。出于安全原因,此设置的存在是为了禁止恶意用户上传非常大的文件来归档您的服务器磁盘空间。此设置默认为大约 2 MB,应调整为您需要框架接收的最大文件大小(最大 2 gigs)"

所以我发现这个问题可以通过在 struts.xml 文件中添加具有所需最大限制<constant name="struts.multipart.maxSize" value="1000000" /> 的标签来解决。

我们使用的是struts2-convention-plugin,所以我们没有struts.xml。所以我不确定在哪里定义这个最大文件大小......

如果你们中有人遇到过这个问题,请告诉我..

感谢您的帮助。

【问题讨论】:

    标签: java file-upload struts2 struts2-convention-plugin


    【解决方案1】:
    1. 您可以在 Struts.xml 中定义一个最大尺寸(multipart.maxSize,如您所说)来限制每个多部分请求的 overall 传输;

    2. 您还可以为 FileUpload Interceptor 定义一个文件大小(默认为 2MB),无论是全局到一个包,还是为单个操作(通过将该参数配置为struts.xml<action> 标记中的那个拦截器,或者使用 Convention 插件

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

    这意味着,例如,如果您将整体分段大小配置为 20 MB,每个文件的最大大小为 4MB,您将能够在单个请求中执行 5 个 4MB 文件的多次上传;

    更多信息在这里:https://stackoverflow.com/a/15968166/1654265


    也就是说,你的问题是非问题

    使用Convention plugin并不意味着你没有struts.xml;这意味着

    • 可以在动作中使用注释
    • 可以避免使用 struts.xml
    • 当某些与操作无关的 struts 配置(如 multipart.maxSize)需要全局映射(结果、异常、自定义拦截器堆栈等)时,您绝对可以使用 struts.xml(创建它,如果它直到那一刻才存在)。

    Convention Plugin Documentation 中没有提到它与 struts.xml 互斥(相反,如果您尝试在该页面上搜索“struts.xml”,你会发现有好几次)

    【讨论】:

      【解决方案2】:

      您还必须更改 apache 目录中 conf 文件夹下的 server.xml 文件。找到您正在使用的connector 标签并添加您想要的maxPostSize,以字节为单位:

      <Connector port="8080" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443" 
                 maxPostSize="2097152" />
      

      【讨论】:

        猜你喜欢
        • 2014-12-07
        • 2014-10-17
        • 1970-01-01
        • 2013-05-13
        • 2011-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多