在Web开发中,文件上传和下载是常见的功能需求。Spring Boot提供了简单、方便的方法来实现文件上传和下载功能。本文将介绍如何在Spring Boot中实现文件的上传和下载。
文件上传
创建文件上传接口
首先,我们需要创建一个用于上传文件的接口。在Spring Boot中,可以使用@RequestParam注解来接收上传的文件。
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
// 处理上传的文件逻辑
return "File uploaded successfully";
}
}
在上述代码中,路径为/upload的POST请求会被映射到uploadFile方法上,通过@RequestParam("file")注解接收上传的文件。
配置文件上传路径
接下来,我们需要配置文件上传的路径。在application.properties文件中添加以下配置:
spring.servlet.multipart.enabled=true
spring.servlet.multipart.location=your-upload-directory
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
在上述配置中,your-upload-directory为你想要保存上传文件的目录。max-file-size和max-request-size用于限制上传文件的大小。
测试文件上传
使用Postman等工具,向http://localhost:8080/upload发送一个POST请求,并在请求体中选择一个文件进行上传。上传成功后,会收到返回的字符串"File uploaded successfully"。
文件下载
创建文件下载接口
接下来,我们需要创建一个用于下载文件的接口。在Spring Boot中,可以使用@GetMapping注解来处理GET请求,并通过ResponseEntity将文件发送给客户端。
@RestController
public class FileDownloadController {
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile() throws IOException {
// 从服务器中读取文件
Resource resource = new UrlResource("file:path-to-file");
// 设置下载响应头
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + resource.getFilename());
// 返回响应实体
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.body(resource);
}
}
在上述代码中,路径为/download的GET请求会被映射到downloadFile方法上。该方法首先从服务器中读取文件,并设置响应头,然后使用ResponseEntity返回文件给客户端。
测试文件下载
通过访问http://localhost:8080/download可以直接下载服务器上的文件。
总结
通过上述步骤,我们成功实现了在Spring Boot中的文件上传和下载功能。通过调用对应的接口,我们可以方便地处理文件上传和下载的需求。希望本文能对你有所帮助。
评论 (0)