如果我尝试上传超过2mb大小的文件,它会出错。
我在apache网站上发现"有两个单独的文件大小限制。首先是Struts .multipart. maxsize,它来自Struts 2的默认值。属性文件。此设置是出于安全原因,以禁止恶意用户上传超大文件以占用服务器的磁盘空间。此设置默认为大约2兆字节,应该调整为框架接收"
"所需的最大文件大小(最大2兆字节)。所以我发现这个问题可以通过在struts.xml文件中添加具有所需最大限制<constant name="struts.multipart.maxSize" value="1000000" />
的标记来解决。
我们正在使用struts2-convention-plugin,所以我们没有struts.xml。所以我不确定在哪里定义这个最大文件大小…
如果你们中有人遇到这个问题,请告诉我。
谢谢你的帮助。
-
你可以在Struts.xml (multipart)中定义一个最大大小。maxSize,如你所说)限制每个多部分请求的总体传输;
-
你也可以为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" />