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)


基础教程推荐
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 降序排序:Java Map 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01