SpringBoot文件上传-单文件与多文件上传的使用
发布人:shili8
发布时间:2025-02-21 04:07
阅读次数:0
**Spring Boot 文件上传**
在实际开发中,文件上传是非常常见的需求。Spring Boot 提供了一个简单易用的 API 来处理文件上传。下面我们将介绍如何实现单文件与多文件上传。
### 单文件上传首先,我们需要在 Spring Boot项目中添加必要的依赖:
xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.8.0</version> </dependency>
接下来,我们需要创建一个 Controller 来处理文件上传:
javaimport org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet. />import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; @RestControllerpublic class FileController { @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { //保存文件到本地 String filePath = "/path/to/upload"; try { File targetFile = new File(filePath, file.getOriginalFilename()); file.transferTo(targetFile); return "上传成功!"; } catch (IOException e) { return "上传失败!" + e.getMessage(); } } @GetMapping("/download") public void download(HttpServletResponse response) { // 下载文件 String filePath = "/path/to/download"; try { File file = new File(filePath); FileInputStream in = new FileInputStream(file); OutputStream out = response.getOutputStream(); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer,0, len); } in.close(); out.flush(); out.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } }
### 多文件上传多文件上传与单文件上传类似,但是需要处理多个 MultipartFile 对象:
javaimport org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet. />import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; @RestControllerpublic class FileController { @PostMapping("/upload") public String upload(@RequestParam("files") MultipartFile[] files) { //保存文件到本地 String filePath = "/path/to/upload"; try { for (MultipartFile file : files) { File targetFile = new File(filePath, file.getOriginalFilename()); file.transferTo(targetFile); } return "上传成功!"; } catch (IOException e) { return "上传失败!" + e.getMessage(); } } @GetMapping("/download") public void download(HttpServletResponse response) { // 下载文件 String filePath = "/path/to/download"; try { File file = new File(filePath); FileInputStream in = new FileInputStream(file); OutputStream out = response.getOutputStream(); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer,0, len); } in.close(); out.flush(); out.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } }
### 总结在本文中,我们介绍了如何使用 Spring Boot 实现单文件与多文件上传。通过使用 MultipartFile 对象,可以轻松地处理文件上传和下载需求。