返回

Java SpringBoot实现本地上传文件到resources目录永久保存下载

后端

使用 Java SpringBoot 实现本地文件上传

一、导言

在 Java 后端开发中,文件上传是一个不可或缺的功能。然而,在学习或测试阶段,将文件直接上传到第三方云服务(如阿里云 OSS)可能不够便捷。本地文件上传 为我们提供了一个更为简单易行的替代方案。

二、技术方案

利用 Java SpringBoot 框架,我们可以轻松实现本地文件上传。具体步骤如下:

1. 配置 pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

2. 创建 Controller

@RestController
@RequestMapping("/file")
public class FileController {

    @Value("${spring.resources.static-locations}")
    private String uploadPath;

    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
        File uploadDir = new File(uploadPath);
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();
        }
        String fileName = file.getOriginalFilename();
        File saveFile = new File(uploadPath + fileName);
        file.transferTo(saveFile);
        return "文件上传成功!";
    }
}

3. 配置 application.properties

spring.resources.static-locations=file:resources/

三、测试上传

启动项目,访问 "http://localhost:8080/file/upload",选择要上传的文件即可完成上传。上传的文件将保存在项目的 resources 目录下。

四、注意事项

  • 确保已创建 resources 目录并配置好其路径。
  • 文件上传路径可根据实际情况修改。
  • 文件上传大小和类型可通过修改 multipart.max-file-size 和 multipart.max-request-size 等配置进行限制。

五、结语

利用 Java SpringBoot 实现本地文件上传,为学习和测试提供了极大的便利。虽然在正式项目中不建议直接上传文件到本地,但对于开发和测试来说,这是一个高效而实用的解决方案。

六、常见问题解答

  1. 如何修改上传文件路径?

    • 在 FileController 的 upload() 方法中修改 uploadPath 即可。
  2. 如何限制文件大小?

    • 在 application.properties 文件中配置 multipart.max-file-size 属性。
  3. 如何限制请求大小?

    • 在 application.properties 文件中配置 multipart.max-request-size 属性。
  4. 上传文件时报 404 错误怎么办?

    • 检查 resources 目录是否存在并已正确配置。
  5. 上传文件时报 413 错误怎么办?

    • 检查 multipart.max-file-size 和 multipart.max-request-size 配置是否符合上传文件大小。