Struts 2约定插件-上传大于2mb的文件



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

我在apache网站上发现"有两个单独的文件大小限制。首先是Struts .multipart. maxsize,它来自Struts 2的默认值。属性文件。此设置是出于安全原因,以禁止恶意用户上传超大文件以占用服务器的磁盘空间。此设置默认为大约2兆字节,应该调整为框架接收"

"所需的最大文件大小(最大2兆字节)。

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

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

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

谢谢你的帮助。

  1. 你可以在Struts.xml (multipart)中定义一个最大大小。maxSize,如你所说)限制每个多部分请求的总体传输;

  2. 你也可以为FileUpload Interceptor(默认2MB)定义一个文件大小,既可以全局地定义到一个包,也可以定义单个动作(通过在struts.xml<action>标签中为该拦截器配置该参数,或者在使用约定插件:

    时在动作中注释它)。
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">10485760</param>
    </interceptor-ref>
    

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

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


也就是说,你的问题是一个非问题;

使用约定插件并不意味着你没有struts.xml;这意味着

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

在约定插件文档中没有提到它与struts.xml是互斥的(相反,如果你试图在该页上搜索"struts.xml",你会发现几个出现)

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

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

相关内容

  • 没有找到相关文章

最新更新