【发布时间】:2013-05-11 06:05:24
【问题描述】:
我有一个 Spring MVC 网络,它有两个不同的页面,它们有不同的表单来上传不同的文件。其中一个应该有 2MB 的限制,而另一个应该有 50MB 的限制。
现在,我的 app-config.xml 中有这个限制:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes (2097152 B = 2 MB) -->
<property name="maxUploadSize" value="2097152 "/>
</bean>
我可以像这样在我的主控制器中解决 maxUploadSize 异常:
@Override
public @ResponseBody
ModelAndView resolveException(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception exception) {
ModelAndView modelview = new ModelAndView();
String errorMessage = "";
if (exception instanceof MaxUploadSizeExceededException) {
errorMessage = String.format("El tamaño del fichero debe ser menor de %s", UnitConverter.convertBytesToStringRepresentation(((MaxUploadSizeExceededException) exception)
.getMaxUploadSize()));
} else {
errorMessage = "Unexpected error: " + exception.getMessage();
}
saveError(arg0, errorMessage);
modelview = new ModelAndView();
modelview.setViewName("redirect:" + getRedirectUrl());
}
return modelview;
}
但这显然只控制了 2MB 的限制。我怎么能限制 20MB 的呢? 我试过这个解决方案:https://stackoverflow.com/a/11792952/1863783,它更新了运行时的限制。但是,这会为每个会话和每个控制器更新它。因此,如果一个用户正在为第一个表单上传文件,那么另一个在第二个表单中使用上传的用户应该有第一个的限制......
有什么帮助吗?谢谢
【问题讨论】:
-
我已经对此功能提出了拉取请求 -github.com/apache/commons-fileupload/pull/22
标签: java spring-mvc upload