如果我尝试上传超过2 MB大小的文件,则会出错。
我在apache网站上发现“有两个单独的文件大小限制。首先是来自Struts 2 default.properties文件的struts.multipart.maxSize。出于安全原因,此设置存在以禁止恶意用户上传用于提交服务器磁盘空间的极大文件。此设置默认为大约2兆字节,应调整为您需要框架接收的最大文件大小(最大2 ggs)“
所以我发现可以通过在struts.xml文件中添加带有所需最大限制<constant name="struts.multipart.maxSize" value="1000000" />
的标记来解决此问题。
我们正在使用struts2-convention-plugin,所以我们没有struts.xml。所以我不确定在哪里定义这个最大文件大小...
如果你们中有人遇到过这个问题,请告诉我。
感谢您的帮助。
答案 0 :(得分:1)
您还必须更改apache目录中server.xml
文件夹下的conf
文件。找到您正在使用的connector
标记,并以字节为单位添加所需的maxPostSize
:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="2097152" />
答案 1 :(得分:1)
您可以在Struts.xml中定义最大大小( multipart.maxSize ,如您所说),以限制每个多部分请求的整体转移;
您还可以为 FileUpload Interceptor (默认为2MB)定义文件大小,包括全局包和单个Action(通过配置) struts.xml 中<action>
标记中该拦截器的参数,或者在使用 约定插件时在Action内部对其进行注释 强>:
<interceptor-ref name="fileUpload">
<param name="maximumSize">10485760</param>
</interceptor-ref>
这意味着,例如,如果您将整个多部分大小配置为20 MB,每个文件的最大大小为4 MB,则可以在单个请求中执行5个4 MB文件的多次上载; < / p>
此处有更多信息:https://stackoverflow.com/a/15968166/1654265
那就是说,你的问题是无问题;
使用 Convention插件 并不意味着您没有 struts.xml ;这意味着
Convention Plugin Documentation中没有提到它与 struts.xml 互斥(相反,如果您尝试在该页面上搜索“ struts.xml “,你会发现几次事件)