1

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

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

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

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

请让我知道你们中是否有人遇到过这个..

感谢您的帮助。

4

2 回答 2

1

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

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
           maxPostSize="2097152" />
于 2013-06-04T21:54:33.753 回答
1
  1. 您可以在 Struts.xml 中定义最大大小(如您所说的multipart.maxSize)以限制每个多部分请求的整体传输;

  2. 您还可以为FileUpload Interceptor定义文件大小(默认为 2MB),全局到包和单个操作(通过在struts.xml<action>的标记中为该拦截器配置该参数,或通过在操作内注释它使用Convention 插件时:

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

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

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


也就是说,您的问题不是问题

使用Convention 插件并不意味着您没有struts.xml;代表着

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

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

于 2013-06-05T08:04:12.563 回答