java - 两个 Controller 在 Spring Boot 中具有不同的最大文件大小

标签 java spring servlets spring-boot

在 Servlet 3.0 规范中,可以创建两个具有不同最大文件大小的 servlet 并且可以正常工作。

@WebServlet(urlPatterns = { "/ureupload1" })
// 10MB
@MultipartConfig(maxFileSize = 1024 * 1024 * 10)
public class UploadServlet1 extends HttpServlet {

@WebServlet(urlPatterns = { "/ureupload2" })
// 30MB
@MultipartConfig(maxFileSize = 1024 * 1024 * 30)
public class UploadServlet2 extends HttpServlet {

如果使用 Spring Boot Controller,@MultipartConfig 似乎不起作用。

@Controller
@MultipartConfig(maxFileSize = 1024 * 1024 * 10)
public class UploadController1 {

    @RequestMapping(value = "/upload1", method = RequestMethod.POST, consumes = "multipart/form-data")
    public ModelAndView doPost(@RequestParam("file") MultipartFile file,

如何创建两个具有不同最大文件大小的 Controller ?

编辑:

附加信息:application.properties 中的以下属性用于设置默认最大文件大小:

spring.http.multipart.max-file-size=30MB

另请参阅:SpringBoot's @MultipartConfig maxFileSize not taking effect

最佳答案

您需要在 application.properties 文件中设置默认配置

spring.http.multipart.max-file-size=30MB
spring.http.multipart.max-request-size=30MB

并且在您的 Controller 中,您需要根据文件大小抛出 MaxUploadSizeExceededException 异常:

long  limit = 1024 * 1024 * 10; 
if (file.getSize() > limit) {
    throw new MaxUploadSizeExceededException(limit);
}

关于java - 两个 Controller 在 Spring Boot 中具有不同的最大文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45639042/

相关文章:

java - 使用 POST 方法提交的表单在 Firefox 中被截断

java - http请求的url编码正文

java - 如何使用 Java 中的 REST API 为 DocuSign 中的复选框定义条件字段?

java - 为什么我看不到通过 Spring Data JPA 的更新查询发出的更改?

java - 在 JPA/Hibernate 中使用 Spring 定义的 transactionManager

java - Spring 启动 : Unit test and Config file

servlets - 如何在servlet环境中初始化API

java - SAML 元数据条目的签名信任建立失败

Java——运行时类型差异

java - CDI discovery-mode annotated 不扫描构造型 bean