Spring Mvc 怎么上传超过全局配置的文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Mvc 怎么上传超过全局配置的文件?相关的知识,希望对你有一定的参考价值。
在文件上传的时候,Spring Mvc已经限制了上传文件的大小,在不动全局配置的情况下,怎么针对个别文件(大于配置的大小)上传?比如限制最大是2M,我现在需要上传一个20M的文件?咋办
springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便。我们通过下面的配置来使用springMVC文件上传功能。
<bean id="multipartResolver" class="com.youth.controller.fileupload.MultipartListenerResolver">
<!-- 设置上传文件的最大尺寸为10M -->
<property name="maxUploadSize" value="10240"/>
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/> </bean>
Controller层我们这样接收文件
@RequestMapping("fileUpload")public void fileUpload(@RequestParam("myFile") MultipartFile multipartFile) throws Exception
String fileName = multipartFile.getOriginalFilename();
File f = createFile(fileName);
multipartFile.transferTo(f);
页面上记得指定enctype属性哦
<form method="post" enctype="multipart/form-data"></form>
如果你的springMVC配置是正确的,那么到此springMVC的文件上传功能已经可以用了。一切都很完美。
由于我们配置了maxUploadSize属性,那么如果我们的文件超过了10M会出现什么情况呢?
理论上系统会抛出MaxUploadSizeExceededException异常,那么如何处理呢?
springMVC异常处理的配置方式如下:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">redirect:/error.jsp</prop>
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">redirect:/MaxUploadSizeError.jsp</prop>
</props> </property><property name="defaultErrorView" value="redirect:/error.jsp"></property> <property name="defaultStatusCode" value="500"></property></bean>
上面的配置作用是如果系统抛出MaxUploadSizeExceededException异常,系统跳转到MaxUploadSizeError.jsp页面给用户以提示。
如果是其他Exception异常,则跳转到error.jsp页面。
接下来我们测试一下上面的异常处理是否生效了。
在你的代码任意地方试着抛出NullPointException异常,发现页面的确能跳转到error.jsp,证明我们的异常处理是生效的。
然后我们上传一个10M以上的文件,我们发现后台控制台抛出了MaxUploadSizeExceededException异常,我们期待着页面转向到MaxUploadSizeError.jsp。 参考技术A 不能改全局设置的话就只能用分片上传
spring mvc 怎么大小上传文件控制?
小弟在弄一个这个框架的上传,非常简单的input=file的上传,想知道怎么能在点确认上传的时候控制文件大小,超过多少M就不能上传, 用的是ibatis+spring java web的.求大神解答.谢谢谢.
1、SpringMVC的配置文件里面可以配置限制上传文件的大小,比如40MB,但是,如果在页面上上传超过40MB ,则他都不进入到Action,则直接就报错了。被拦截了。2、客户端判断的话,IE8、IE9、火狐好像支持都不一样,有说用Flash的,有说用HTML5的,
个人感觉HTML5不太靠谱,毕竟现在的应用肯定是要支持IE8、IE9的。 参考技术A <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="123456" />
</>追问
但是用这个的话,超过value的话我的程序会跳错误页.是哪配置不对吗.
追答Spring API 中org.springframework.web.multipart.commons.CommonsMultipartResolver的resolveMultipart方法说明
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException
Throws:
MultipartException - if the servlet request is not multipart, or if implementation-specific problems are encountered (such as exceeding file size limits)
文件大小超出限制会抛出异常,应该是抛MaxUploadSizeExceededException
你可以在Controller中捕获一下,
@ExceptionHandler(MaxUploadSizeExceededException.class)
public String aaa(Model model)
model.addAttribute("errorMsg", "上传的文件太大啦!");
return "maxUploadSizeExceeded";
以上是关于Spring Mvc 怎么上传超过全局配置的文件?的主要内容,如果未能解决你的问题,请参考以下文章