返回

Spring Boot:轻松实现文件上传和下载,让数据传输更便捷

后端

Spring Boot 文件上传和下载:一站式指南

在数据主导的现代时代,文件上传和下载已成为许多网络应用程序的必需功能。Spring Boot 作为一款流行的 Java 框架,凭借其简单易用的特性,使文件上传和下载的实现变得轻而易举。

依赖注入

首先,让我们在项目中添加 Spring Boot 的文件上传和下载依赖项。在 pom.xml 文件中加入以下代码:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

配置

接下来,我们需要在 application.properties 文件中进行必要的配置。首先,指定文件上传的临时目录,用于系统在文件上传过程中临时存储文件。同时,我们还需要指定文件下载的根目录,用于系统在文件下载时获取文件。

# 文件上传临时目录
spring.servlet.multipart.location=./tmp/upload

# 文件下载根目录
spring.servlet.multipart.resolve-lazily=true

控制器

在控制器中,我们需要编写处理文件上传和下载请求的方法。对于文件上传,我们可以使用 MultipartFile 类型的参数接收上传的文件,并在方法中保存文件。对于文件下载,我们可以使用 OutputStream 类型的参数将文件内容写入响应中,并在方法中读取文件。

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
    // 保存文件
    ...

    return "redirect:/";
}

@GetMapping("/download")
public void download(@RequestParam("file") String fileName, HttpServletResponse response) {
    // 获取文件内容
    ...

    // 写入响应
    ...
}

模板

最后,我们需要在模板中设计文件上传和下载页面。对于文件上传,我们可以使用 HTML 表单收集文件并将其提交到控制器。对于文件下载,我们可以使用超链接触发控制器中的文件下载方法。

<!-- 文件上传表单 -->
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>

<!-- 文件下载链接 -->
<a href="/download?file=test.txt">下载</a>

常见问题解答

  1. 如何限制上传文件的最大大小?
    • 在 application.properties 文件中添加以下配置:
spring.servlet.multipart.max-file-size=10MB
  1. 如何支持多文件上传?

    • 在 HTML 表单中使用 来允许选择多个文件。
  2. 如何处理文件上传异常?

    • 在控制器方法中使用 @ExceptionHandler(IOException.class) 注解来捕获文件上传异常。
  3. 如何启用文件下载的断点续传功能?

    • 在响应头中添加以下配置:
Content-Range: bytes 0-1000/1024
  1. 如何自定义文件下载的 Content-Disposition 头?
    • 在控制器方法中使用以下代码:
response.setHeader("Content-Disposition", "attachment; filename=test.txt");

结论

通过遵循这些步骤,您已掌握了 Spring Boot 中文件上传和下载的实现。从依赖添加、配置、控制器编写到模板设计,您已逐步构建了全面的文件上传和下载功能。祝您在使用 Spring Boot 进行文件操作时一切顺利!