Spring Boot:为不同接口单独配置文件上传大小的实战指南
在Spring Boot中,可以通过配置文件来设置全局的文件上传大小限制。但是,如果你需要为不同的接口单独配置文件上传大小,则需要使用一些额外的配置和代码来实现。 以下是一个示例,展示了如何为不同的接口单独配置文件上传大小: 1. **全局配置**:首先,在`application.properties`或`application.yml`文件中设置一个全局的文件上传大小限制。 ```properties # application.properties spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` 2. **自定义MultipartResolver**:创建一个自定义的`MultipartResolver`,用于不同的接口配置不同的文件上传大小。 ```java import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.unit.DataSize; import org.springframework.web.multipart.MultipartResolver; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.MultipartConfigElement; @Configuration public class MultipartConfig { @Bean(name = "customMultipartResolver") public MultipartResolver customMultipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(DataSize.ofMegabytes(5)); // 设置自定义的文件上传大小 return multipartResolver; } } ``` 3. **控制器中使用不同的MultipartResolver**:在控制器中指定使用不同的`MultipartResolver`。 ```java import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartResolver; import java.io.IOException; @RestController @RequestMapping("/api") public class FileUploadController { private final MultipartResolver customMultipartResolver; public FileUploadController(@Qualifier("customMultipartResolver") MultipartResolver customMultipartResolver) { this.customMultipartResolver = customMultipartResolver; } @PostMapping("/upload") public String handleFileUpload(MultipartHttpServletRequest request) throws IOException { if (customMultipartResolver instanceof CommonsMultipartResolver) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile file = multipartRequest.getFile("file"); if (file != null) { // 处理文件上传逻辑 return "File uploaded successfully!"; } else { return "No file uploaded!"; } } else { return "Invalid multipart resolver!"; } } } ``` 4. **测试**:启动Spring Boot应用并测试不同接口的文件上传功能。 通过这种方式,你可以为不同的接口配置不同的文件上传大小限制。需要注意的是,这种方法适用于简单的场景,如果需要更复杂的配置,可能需要进一步定制`MultipartResolver`或使用其他方法。 ######[AI写代码神器 | 795点数解答 | 2024-11-26 09:37:24]
- Spring框架实战:从配置到实现,搞定员工信息查询功能(GPT | 2135点数解答 | 2024-06-12 08:32:35)331
- IntelliJ IDEA 搭建 Spring Boot 项目:从创建到 JPA 实体类及数据源配置全攻略(讯飞星火 | 920点数解答 | 2024-10-31 15:37:22)285
- Maven POM文件开头元素详解及Spring Boot项目配置规范(DeepSeek | 1912点数解答 | 2026-04-23 16:43:34)20
- Java 实战:创建 Vehicle 接口并在 Bike 类实现,T4 类调用启动与停止方法(字节豆包 | 130点数解答 | 2024-09-19 17:40:54)436
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)282
- 用C++解决P2197扩建花坛问题:计算长方形花坛扩建为正方形最少增加的面积(字节豆包 | 280点数解答 | 2026-03-22 16:46:21)42
- 超详细:使用Java 8创建连接MySQL数据库的Spring Boot项目全步骤( | 1491点数解答 | 2024-05-13 16:25:58)275
- IDEA搭建 Java 8 连接 MySQL 的 Spring Boot 项目全流程:从创建到测试( | 1985点数解答 | 2024-05-13 16:26:16)315
- 深度解析:Vue + Spring Boot 组合的应用优势与发展前景(字节豆包 | 587点数解答 | 2025-04-29 16:25:49)169
- 揭秘Spring Boot + Vue3前后端分离架构:从开发到安全的全方位技术优势(DeepSeek | 2255点数解答 | 2025-05-07 18:15:21)377
- Spring Boot 与 Vue 联手:轻松实现微信扫码登录全攻略(字节豆包 | 207点数解答 | 2025-05-13 09:12:19)183
- 深度剖析:Spring Boot + Vue3 前后端分离架构的全方位技术优势(DeepSeek | 1760点数解答 | 2025-05-24 11:04:00)232