在现代的Web应用程序中,文件上传和下载功能是常见的需求。Spring Boot为我们提供了简单且方便的方式来实现这些功能。本篇博客将介绍如何在Spring Boot项目中实现文件上传和下载功能。
文件上传
首先,我们需要配置我们的应用程序来允许文件上传。在application.properties
文件中,添加以下配置:
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
上述配置将允许最大10MB大小的文件上传。你可以根据你的需求进行调整。
接下来,我们需要创建一个FileController
类来处理文件上传的请求。在FileController
类中,我们可以使用@RestController
注解来标记该类为一个REST控制器,并且我们可以使用@PostMapping
注解来标记该方法为处理POST请求的方法。整个FileController
类的代码示例如下:
@RestController
public class FileController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 获取文件的原始名称
String fileName = file.getOriginalFilename();
// 将文件保存到本地文件系统中
Path filePath = Paths.get("uploads/" + fileName);
Files.copy(file.getInputStream(), filePath);
return "文件上传成功!";
} catch (IOException e) {
return "文件上传失败!";
}
}
}
在上述代码中,我们使用@RequestParam
注解来获取上传的文件。我们还使用getOriginalFilename()
方法来获取文件的原始名称。然后,我们使用Paths.get()
方法来创建保存文件的路径对象,并使用Files.copy()
方法将文件保存到本地文件系统中。
文件下载
接下来,我们需要实现文件下载功能。为此,我们需要创建一个新的REST控制器,并添加一个新的方法来处理文件下载请求。在FileController
类中,添加以下代码:
@RestController
public class FileController {
// ...
@GetMapping("/download/{fileName:.+}")
public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) {
try {
// 获取文件的路径
Path filePath = Paths.get("uploads/" + fileName);
// 从文件路径中创建资源对象
Resource resource = new UrlResource(filePath.toUri());
// 设置响应头,使浏览器能够下载文件
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
.body(resource);
} catch (MalformedURLException e) {
return ResponseEntity.notFound().build();
}
}
}
在上述代码中,我们使用@PathVariable
注解来获取要下载的文件名称。然后,我们使用Paths.get()
方法来获取文件的路径,并使用UrlResource
类来创建资源对象。最后,我们使用ResponseEntity
类来返回包含文件资源的响应实体,并设置响应头,以便浏览器能够正确下载文件。
测试文件上传和下载功能
现在我们可以测试我们的文件上传和下载功能。可以使用Postman或类似工具进行测试。
文件上传
使用POST
请求发送/upload
,选择一个要上传的文件,然后点击发送。如果一切正常,你将收到一个"文件上传成功!"的响应。
文件下载
使用GET
请求发送/download/filename
,将filename
替换为你要下载的文件的名称。如果文件存在,你将收到一个响应,并且文件将自动下载到你的本地计算机。
总结
在本篇博客中,我们介绍了如何使用Spring Boot实现文件上传和下载功能。通过简单配置和使用Spring Boot的强大功能,我们可以轻松地实现这些基本的文件操作。希望这篇博客对你有所帮助!
本文来自极简博客,作者:星辰守望者,转载请注明原文链接:Spring Boot中实现文件上传和下载功能