Spring Boot 全流程解析:安全保存上传的 MultipartFile 文件
在Spring Boot中,处理上传的MultipartFile文件通常需要以下几个步骤: 1. 创建一个接收文件的控制器方法: ```java @PostMapping("/upload") public ResponseEntity<?> uploadFile(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return ResponseEntity.badRequest().body("File is empty"); } try { // 检查文件类型和大小 if (!allowedFileTypes.contains(file.getOriginalFilename().toLowerCase())) { return ResponseEntity.badRequest().body("Unsupported file type"); } if (file.getSize() > MAX_FILE_SIZE) { return ResponseEntity.badRequest().body("File size exceeds limit"); } // 保存文件 String filename = UUID.randomUUID().toString() + "." + file.getOriginalFilename(); File targetFile = new File(UPLOAD_FOLDER, filename); file.transferTo(targetFile); return ResponseEntity.ok("File uploaded successfully: " + filename); } catch (Exception e) { return ResponseEntity.badRequest().body("Error occurred while uploading file: " + e.getMessage()); } } ``` 2. 定义允许的文件类型和最大文件大小(这里是示例,你可以根据实际需求调整): ```java private static final List<String> allowedFileTypes = Arrays.asList("jpg", "png", "jpeg"); private static final long MAX_FILE_SIZE = 1024 * 1024 * 5; // 5MB ``` 3. 定义上传文件的目录(这里假设你有一个名为`UPLOAD_FOLDER`的系统属性或环境变量指向一个可写目录): ```java String UPLOAD_FOLDER = System.getProperty("user.home") + "/Downloads/uploaded_files"; ``` 这个例子中,我们首先检查文件是否为空、类型是否允许以及大小是否超过限制。如果一切正常,我们将文件保存到指定的目录,并返回一个确认消息。如果发生错误,我们会返回一个错误响应。 注意:在生产环境中,你应该考虑使用更安全的方式来存储文件,例如将文件保存到服务器的临时目录,然后在处理完成后移动到长期存储的位置。确保对上传的文件进行适当的验证,以防止恶意文件上传。 ######[AI写代码神器 | 459点数解答 | 2024-04-02 14:13:22]
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)404
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)383
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)361
- IntelliJ IDEA 搭建 Spring Boot 项目:从创建到 JPA 实体类及数据源配置全攻略(讯飞星火 | 920点数解答 | 2024-10-31 15:37:22)275
- Maven POM文件开头元素详解及Spring Boot项目配置规范(DeepSeek | 1912点数解答 | 2026-04-23 16:43:34)9
- Spring框架实战:从配置到实现,搞定员工信息查询功能(GPT | 2135点数解答 | 2024-06-12 08:32:35)324
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)325
- 超详细:使用Java 8创建连接MySQL数据库的Spring Boot项目全步骤( | 1491点数解答 | 2024-05-13 16:25:58)271
- IDEA搭建 Java 8 连接 MySQL 的 Spring Boot 项目全流程:从创建到测试( | 1985点数解答 | 2024-05-13 16:26:16)311
- 深度解析:Vue + Spring Boot 组合的应用优势与发展前景(字节豆包 | 587点数解答 | 2025-04-29 16:25:49)166
- 揭秘Spring Boot + Vue3前后端分离架构:从开发到安全的全方位技术优势(DeepSeek | 2255点数解答 | 2025-05-07 18:15:21)361
- Spring Boot 与 Vue 联手:轻松实现微信扫码登录全攻略(字节豆包 | 207点数解答 | 2025-05-13 09:12:19)179