struts文件上传大小限制
❶ struts2在上传时控制文件大小时错误
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:(2164310)exceedstheconfiguredmaximum(2097152)
日志显示上传文件大于配置文件许可的大小,所有抛出了异常。
Struts2框架底层默认用的是apache的commons-fileupload组件对上传文件进行处理。
struts.multipart.maxSize设置的大小就是该处理时取用的值,在上传文件之前系统会去比较文件的大小是否超过了该值,如果超过将抛出上述异常,并且commons-fileupload组件是不支持国际化的,所以我们看到的异常都是默认的。
你可以查看上传组件的源码,他的异常是Action级别的。
所以如果你还想用这种方法进行异常处理的话,可以这么做:
在action中直接重写ActionSupport的addActionError()方法
判断字符串是不是这样的字符串。
示例代码:
java">@Override
public void addActionError(String anErrorMessage) {
//判断是否是文件上传超过限制大小异常
if (anErrorMessage.startsWith("the request was rejected because its size")) {
super.addActionError("你上传的文件大小超过允许的大小!");
} else {
//如果不是文件上传大小异常则按原来的方法处理
super.addActionError(anErrorMessage);
}
}
页面加上个<s:fielderror/>
ok了。
需要注意的是,原来页面上的其他输入信息都会消失不见。
因为此异常是在上传前捕获的。
❷ 文件上传时,文件太大会有几种被限制的情况
文件上传时,文件大小超出限制可导致多种情况。首先,前端页面表单输入数据量大,包含多个文本与图片未压缩,最终可能因大小限制上传失败。整个上传过程中,涉及的链路包括nginx、servlet中间件、应用框架如SpringMVC或Struts2、内部RPC访问至数据库。在这一过程中,可能导致上传失败的限制点有配置、框架设置以及特定的协议限制。
在使用nginx作为web服务器时,`client_max_body_size`参数的设置至关重要。若未配置此参数,上传大文件时可能会中断在nginx请求中,导致无法记录访问。查看nginx配置文件(如`/usr/local/nginx/conf/nginx.conf`),确保`client_max_body_size`值调整至适合的大小,避免上传失败。
当使用Tomcat作为服务器时,上传文件大小的最大值默认为2M(2097152字节)。通过修改`server.xml`文件中的`maxPostSize`参数,可调整此限制。
对于Jetty框架,其默认最大文件上传大小为200k。通过修改配置文件`jetty.xml`中的`maxFormContentSize`参数,可以重新设定此限制。设置为-1表示不限制上传大小。
在Spring Boot框架中,通过修改`application.yml`或`application.properties`文件,调整`multipart.maxFileSize`和`multipart.maxRequestSize`参数来限制文件上传大小。对于不同版本的Spring Boot,配置细节有所变化,如从1.3版本到2.0版本,单位由Mb变为MB。
Struts2框架默认的文件上传大小限制为2M。通过在`struts.xml`配置文件中设置上传文件的最大值,可以调整这一限制。
在使用bbo协议的RPC框架时,其默认限制为8M,导致传输大数据容量的对象时可能出现异常。调整bbo协议的配置,如在`bbo.properties`中修改`bbo.protocol.bbo.payload`参数,可以增加传输大文件的容量限制。注意,bbo不支持文件或流传输。
数据库层面也存在大小限制,如MySQL的`max_allowed_packet`变量默认配置为16M。若上传文件大小超出此限制,将引发异常。通过修改数据库配置文件中的`max_allowed_packet`值,可以调整最大允许数据包大小,如设置为30M,并重启数据库连接以使设置生效。
综上所述,文件上传时大小限制可能导致的限制情况包括前端数据大小、服务器配置、框架设置及特定协议限制等。确保各环节参数配置得当,以适应不同大小的文件上传需求。
❸ struts2中上传文件时报404错误
如果说配置文件字段名都没有错的话那就是说你的上传的文件超过了4M,而fileupload默认的上传限度为4M!如果没有跟改配置的话那就会抛出异常!而在struts2中则是返回为input!而你又在struts.xml中没有配置<result name = "input">/test.jsp</result>所以为出现404!如果先要根治的话!你需要在配置文件中配置一下<constant name="struts.multipart.maxSize" value="20480000"/>
value的值你可以看着设!最大限度是2G
❹ 在Java中,文件上传时怎样判断并限制附件大小
你是用什么方式上传的? 如果是JQUERY 'onSelect': function(e, queueId, fileObj) 在这里
判断多大fileObj.size 超过 就提示 并return false 就可以了 如果是普通上传 可以读到文件路径 一样用 File file = new File(path); file .size 判断 如果超过 就不给上传 并提示到页面就可以了
struts上传还可以在配置文件里面做限制 struts.properties 里面 加上这个
struts.multipart.maxSize=2097152