文档章节

tomcat7容器下Spring4.x限制上传文件大小问题处理

一路向北的兔斯基
 一路向北的兔斯基
发布于 2015/06/10 21:57
字数 448
阅读 151
收藏 0

环境: apache-tomcat-7.0.59+JAVA7+spring4.0.5

spring xml配置

<bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="${file_size}"></property>
        <property name="defaultEncoding" value="utf-8"></property>
        <property name="resolveLazily" value="true"></property>
    </bean>

注意:resolveLazily为true的意思为文件超出限制后,异常在controller层报出,如果不配置的话,必须用exceptionResolver的方式才能捕获到异常。

controller层处理拦截并处理异常代码:

@ExceptionHandler(MaxUploadSizeExceededException.class)
    public
    @ResponseBody
    String handleException(Exception ex, HttpServletRequest request) throws Exception {
        ResponseResult<Object> result = new ResponseResult<Object>(FAILED, "文件超出大小限制!");
        return mapper.writeValueAsString(result);
    }

以上内容来自于网络,但我测试的时候,html使用ajaxFileUpload提交后始终进入error回调,而不是预期的success回调,导致页面无法提示文件过大的提示。

$.ajaxFileUpload({
                url: 'api/user/getImageWidthAndHeight',
                secureuri: false,
                type: 'POST',
                fileElementId: 'headImag',
                dataType: 'json',
                success: function (data, status) {
                    ...
                }, error: function () {
                    alert("图片处理失败,请重新选择!");
                }
            });

通过chrome断点调试发现有“net::ERR_CONNECTION_RESET”报错,网上搜索了一下,原来tomcat7|8有上传大小的限制,超过默认文件大小将断开链接,具体的配置项和说明如下:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxSwallowSize="209715200"/>

对,就是maxSwallowSize,默认是坑爹的2097152=2MB。

maxSwallowSize:The maximum number of request body bytes (excluding transfer encoding overhead) that will be swallowed by Tomcat for an aborted upload. An aborted upload is when Tomcat knows that the request body is going to be ignored but the client still sends it. If Tomcat does not swallow the body the client is unlikely to see the response. If not specified the default of 2097152 (2 megabytes) will be used. A value of less than zero indicates that no limit should be enforced.

参见tomcat官方配置说明:http://tomcat.apache.org/tomcat-8.0-doc/config/http.html 中的maxSwallowSize

© 著作权归作者所有

共有 人打赏支持
一路向北的兔斯基
粉丝 7
博文 60
码字总数 23700
作品 0
成都
高级程序员
Fastupload 0.4.2 发布

更新:fastupload 0.4.2支持文件上传过滤机制,在解析multipart/form-data请求数据过程中,如果发现boundary内的content-header不符合设定的规则,fastupload组件直接跳过这个boundary。相比...

仪山湖
2012/10/19
1K
1
Fastupload 0.4.7 发布,支持 struts2

Fastupload 0.4.7这个版本中主要增加了支持struts2的文件上传功能的“插件”,修复了解析IE7,IE8下某些版本上传的请求数据中文件名问题(这里感谢lkclkc 网友报的bug及提供的解决思路)。 ...

仪山湖
2012/10/28
1K
1
文件中转上传遇到大小限制了,怎么才能突破限制呢?

下面这个是我用Uploadify做的中转上传模块,具体就是:客户端-----中转服务器------文件服务器,这样中转上传为的是避免跨域问题,因为我们动不了客户那边的容器。 这些代码是可以实现功能了...

藤真
2014/09/04
496
1
.net 文件上传 我们以为的文件大小限制

你以为的ASP.NET文件上传大小限制是你以为的吗 我们以为的文件大小限制 我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传...

可达鸭眉头一皱
2016/05/17
125
0
fastupload 0.3.1 发布

fastupload根据RFC 1867文档规范,编写的基于表单文件上传的组件,支持表单多文件上传,二进制文件与文本文件分开处理,彻底解决上传文本文 件编码问题,支持文件上传大小限制,支持文件上传...

仪山湖
2012/08/21
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

正弦 余弦 角度 用于画时钟

<html> <head> <title>时钟</title> </head> <style> #canvas{ background: #1977ca } </style>......

一箭落旄头
21分钟前
1
0
drupal7自定义模块之表单(新手向)

前段时间要给网站做个高级搜索的功能,但drupal7自带的搜索远远无法满足需求,便有了自己开发的需求 我以前没有接触过drupal,做这个功能也是困难重重,几乎是从零开始,我将目光放到了自定义模块...

gcudwork
26分钟前
0
0
驰狼课堂

http://www.chilangedu.com/

求是科技
43分钟前
0
0
jumpserver 报错"Incorrect string value

申明 本文所有内容参考自jumpserver记录命令无法入库问题 #1773 简介 jumpserver 1.4.0在jumpserver.log中大量报错,错误日志 File "/opt/jumpserver/apps/terminal/api.py", line 246, i...

zhnxin
50分钟前
2
0
用户管理相关配置文件及命令

9月19日任务 2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 扩展知识 实用小工具 简单命令行下实现Linux/Windows文件互传 前提:使用远程工具Xsh...

robertt15
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部