小编典典

Struts 2 Convention插件-上传2 MB以上的文件

java

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

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

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

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

请让我知道您中是否有人遇到此问题。

感谢您的帮助。


阅读 201

收藏
2020-11-30

共1个答案

小编典典

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

  2. 您还可以为 FileUpload Interceptor 定义文件大小(默认为2MB),既可以全局定义到程序包,也可以为单个Action 定义文件大小(通过<action> struts.xml 中的标签中为该Interceptor配置该参数,或者在Action内对其进行注释使用 Convention插件时

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

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


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

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

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

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

2020-11-30