Changing file size limit (maxUploadSize) depending on the controller(根据控制器更改文件大小限制 (maxUploadSize))
问题描述
我有一个 Spring MVC 网络,它有两个不同的页面,它们有不同的表单来上传不同的文件.其中一个应该有 2MB 的限制,而另一个应该有 50MB 的限制.
I have a Spring MVC web with two different pages that have different forms to upload different files. One of them should have a limitation of 2MB, while the other should have a 50MB limitation.
现在,我的 app-config.xml 中有这个限制:
Right now, I have this limitation in my 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 异常:
And I could resolve the maxUploadSize exception in my main controller like that:
@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,它更新了限制运行.但是,这会为每个会话和每个控制器更新它.因此,如果一个用户正在为第一个表单上传文件,另一个使用第二个表单上传的用户应该有第一个的限制......
But this, obviously, only controlls the 2MB limit. How could I make the limitation for the 20MB one? I've tried this solution: https://stackoverflow.com/a/11792952/1863783, which updates the limitation in runtime. However, this updates it for every session and every controller. So, if one user is uploading a file for the first form, another using uploading in the second form should have the limitation of the first one...
有什么帮助吗?谢谢
推荐答案
乍一看似乎不是最好的解决方案,但这取决于您的要求.
It may seem like not the best solution at first sight, but it depends on your requirements.
您可以为所有控制器设置一个具有最大上传大小的全局选项,并为特定控制器使用较小的值覆盖它.
You can set a global option with maximum upload size for all controllers and override it with lower value for specific controllers.
application.properties 文件(Spring Boot)
application.properties file (Spring Boot)
spring.http.multipart.max-file-size=50MB
使用检查上传控制器
public void uploadFile(@RequestPart("file") MultipartFile file) {
final long limit = 2 * 1024 * 1024; // 2 MB
if (file.getSize() > limit) {
throw new MaxUploadSizeExceededException(limit);
}
StorageService.uploadFile(file);
}
如果文件大于 2MB,您将在日志中看到此异常:
In case of a file bigger than 2MB you'll get this exception in log:
org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size of 2097152 bytes exceeded
这篇关于根据控制器更改文件大小限制 (maxUploadSize)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:根据控制器更改文件大小限制 (maxUploadSize)


- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01