来讲解一下“Spring Boot实现文件上传下载”的完整攻略。这里将分为以下步骤:
- 添加依赖
- 创建上传文件的控制器
- 创建下载文件的控制器
1. 添加依赖
首先,在我们的Spring Boot项目中添加依赖。这里我们需要添加的依赖是Spring Boot Web和Apache Commons Fileupload,后者是用来支持文件上传的。在Maven项目中,可以在 pom.xml 文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
2. 创建上传文件的控制器
创建一个Spring MVC控制器,实现文件上传功能。在该控制器的代码中,需要创建一个 CommonsMultipartResolver
对象和一个 FileItemFactory
对象来处理上传的文件,并读取文件的内容。
以下是一个简单的上传文件控制器的示例:
@RestController
public class FileUploadController {
@PostMapping("/upload")
public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) throws Exception {
String fileName = file.getOriginalFilename();
Path path = Paths.get("./uploads/" + fileName);
Files.write(path, file.getBytes());
return ResponseEntity.ok("File uploaded successfully!");
}
}
在这个示例中,我们使用 @PostMapping("/upload")
注解指定了我们上传文件时需要访问的URL。然后,我们使用 @RequestParam("file")
注解指定了我们将要上传的文件,并将其保存到指定的路径下。
3. 创建下载文件的控制器
类似地,我们需要一个控制器来支持文件下载。在这个控制器中,我们需要读取文件的内容并返回给客户端。
下面是一个下载文件的控制器示例:
@RestController
public class FileDownloadController {
@GetMapping("/download")
public ResponseEntity<Resource> download() throws Exception {
Path path = Paths.get("./uploads/sample.txt");
Resource resource = new InputStreamResource(Files.newInputStream(path));
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=example.txt")
.contentType(MediaType.TEXT_PLAIN)
.contentLength(Files.size(path))
.body(resource);
}
}
在这个示例中,我们使用 @GetMapping("/download")
注解来指定文件下载时的URL路径。我们创建了一个 Resource
对象,它包装了文件的内容,并使用 ResponseEntity<Resource>
来返回文件给客户端。在返回前,我们设置了文件的元数据,如文件名、类型和大小。
至此,我们已经完成了Spring Boot实现文件上传下载的完整攻略。在上述示例中,我们演示了如何上传文件和下载文件,你也可以根据自己的业务需求进行修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot实现文件上传下载 - Python技术站