下面是 “Spring Boot 文件上传与下载的示例代码”的完整攻略,包含了两条示例。
Spring Boot 文件上传与下载的示例代码
文件上传
1. 准备工作
在pom.xml中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.2</version>
</dependency>
2. 创建上传文件的controller
在controller中添加@RequestMapping("/upload")
控制器映射
@RestController
@RequestMapping("/upload")
public class UploadController {
@Value("${file.upload-dir}")
private String uploadDir;
@PostMapping("/file")
public String uploadFile(@RequestParam("file") MultipartFile file) {
if(file.isEmpty()) {
return "上传文件为空";
}
String fileName = file.getOriginalFilename();
String filePath = uploadDir + fileName;
File dest = new File(filePath);
try {
file.transferTo(dest);
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败";
}
}
3. 创建上传文件的配置类
配置上传文件的路径,使用@Value("${file.upload-dir}")
获取配置文件中的值。
@Configuration
public class FileUploadConfig {
// 上传文件保存路径,从application.yml中读取
@Value("${file.upload-dir}")
private String uploadDir;
@Bean
public ServletRegistrationBean dispatcherServlet() {
ServletRegistrationBean registration = new ServletRegistrationBean(
new DispatcherServlet(), "/");
registration.setMultipartConfig(getMultipartConfigElement());
return registration;
}
// 设置上传文件的缓存大小和临时路径
private MultipartConfigElement getMultipartConfigElement() {
MultipartConfigElement multipartConfig = new MultipartConfigElement(
uploadDir, MAX_FILE_SIZE, MAX_REQUEST_SIZE, FILE_SIZE_THRESHOLD);
return multipartConfig;
}
}
文件下载
1. 创建下载文件的controller
在controller中添加@RequestMapping("/download")
控制器映射
@RestController
@RequestMapping("/download")
public class DownloadController {
@Value("${file.upload-dir}")
private String uploadDir;
@GetMapping("/file")
public ResponseEntity<byte[]> downloadFile(@RequestParam("filename") String fileName) throws IOException {
String filePath = uploadDir + fileName;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment",fileName);
Path path = Paths.get(filePath);
byte[] bytes = Files.readAllBytes(path);
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
}
2. 添加文件上传路径的配置
file:
upload-dir: D:/file-upload/
示例
示例1:上传文件
请求URL:http://localhost:8080/upload/file
请求方式:POST
参数:file(上传文件)
响应示例:
上传成功
示例2:下载文件
请求URL:http://localhost:8080/download/file?filename=test.jpg
请求方式:GET
响应示例:以文件形式下载文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 文件上传与下载的示例代码 - Python技术站