Spring Boot中的文件上传与下载

火焰舞者 2024-06-25 ⋅ 38 阅读

在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-sizemax-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

    我有话说: