文档章节

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

一路向北的兔斯基
 一路向北的兔斯基
发布于 2015/06/10 21:57
字数 448
阅读 137
收藏 0
点赞 0
评论 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
博文 59
码字总数 23505
作品 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
java_speed/stream

#Stream 上传插件 Stream 是解决不同浏览器上传文件的插件,是Uploadify的Flash版和Html5版的结合! #Stream 简介 Stream 是根据某网的文件上传插件加工而来,支持不同平台(Windows, Linux,...

java_speed
2014/04/09
0
0
Spring--文件上传领悟

Spring MVC文件上传领悟 一,问题描述 同样是表单提交,而文件不是明文,是二进制数据,怎么可以上传呢,spring mvc 到底做了什么呢,今天我们就来探讨下 二,解决方案 首先我要说的是sprin...

fajor
2015/09/22
258
0
解决phpmyadmin上传文件大小限制的配置方法

解决phpmyadmin上传文件大小限制的配置方法  phpmyadmin导入SQL文件时涉及到phpmyadmin上传文件大小限制问题,默认phpmyadmin上传文件大小为2M,如果想要phpmyadmin上传超过2M大文件,就需要...

喵王不瞌睡
2014/10/29
0
0
spring容器问题:解决图片服务器地址无法解析

项目中将图片服务器分离出来,相关配置单独配置到一个 properties 文件中,并使用spring管理该配置文件,如图: 使用的是Nginx 来负责图片服务的处理,关键配置如下: 启动项目进行图片上传的...

sprouting
2016/05/13
97
0
nginx:413 Request Entity Too Large 及 修改 PHP上传文件大小配

nginx:413 Request Entity Too Large 及 修改 PHP上传文件大小配置 开发环境:CentOS + Nginx + PHP + MySql + phpMyAdmin 在用 phpMyAdmin 进行 sql 数据库导入的时候,经常需要上传比较大的...

蜗牛奔跑
2015/09/16
17
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

TensorFlow 作用域与操作符的受限范围

variable_scope 影响变量和操作符 name_scope 只影响操作符 with tf.name_scope(""),使用空字符串将作用域返回到顶层 tf.variable_scope("") 相当于添加一个空层 import tensorflow as tf...

阿豪boy
6分钟前
0
0
Java面试基础篇——第六篇:常见Map类的区别

常见的map类有: HashMap, ConcurrentHashMap (Jdk1.8) , LinkedHashMap, TreeMap, Hashtable。 其中我们最常用的莫过于HashMap, 和并发情况下使用的ConcurrentHashMap了,它们的主要区别就在...

developlee的潇洒人生
8分钟前
0
0
崛起于Springboot2.X之前端模版freemaker(23)

1、配置文件 spring: freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html ......

木九天
24分钟前
1
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
26分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
31分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
32分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
35分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
42分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
46分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部