2013-06-04 65 views
1

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

我在apache网站上发现说“有两个单独的文件大小限制,首先是来自Struts 2 default.properties文件的struts.multipart.maxSize。这个设置是为了禁止恶意用户上传非常大的文件来记录你的服务器磁盘空间,这个设置默认为大约2兆字节,应该调整到最大文件大小(最多2个),你需要框架来接收“

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

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

请让我知道,如果你的任何一个所遇到的这个..

欣赏你的帮助。

回答

1
  1. 可以在struts.xml中定义一个最大尺寸(multipart.maxSize,像你说的)限制为每个多部分请求传输整体;

  2. 您还可以定义文件大小为的FileUpload拦截(默认为2MB),无论是在全球一个包,并为一个单一的动作(由配置该参数为拦截在<action>标签struts.xml中,或使用公约插件时注解它的行动中:

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

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

此处了解详情:https://stackoverflow.com/a/15968166/1654265


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

使用公约插件并不意味着你没有支柱。xml;这意味着

  • 可以在操作使用注解
  • 可能避免使用struts.xml的;
  • 当一些Struts配置不如行动有关,如multipart.maxSize,全球映射(结果,异常,自定义拦截器栈等)是必要的,你绝对能使用struts.xml的(创建它,如果直到那一刻才出现)。

无处在Convention Plugin Documentation,被提及的是相互排斥的struts.xml中(相反,如果你尝试在网页“的struts.xml”上搜索,你会发现几个发生)

1

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

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