下面是一个完整的 Spring Boot 后端示例,用于接收 <form>
提交的文件上传请求(/article/uploadLifeImage
接口),并将上传的文件保存到本地目录。
✅ 一、项目结构
upload-demo/
├── src/
│ └── main/
│ ├── java/com/example/uploaddemo/
│ │ ├── UploadDemoApplication.java
│ │ └── controller/UploadController.java
│ └── resources/
│ └── application.properties
├── pom.xml
✅ 二、依赖配置(pom.xml)
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>upload-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>upload-demo</name>
<description>Spring Boot File Upload Example</description>
<properties>
<java.version>17</java.version>
<spring.boot.version>3.2.0</spring.boot.version>
</properties>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 上传需要用到 Spring Web 的 multipart 支持 -->
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
✅ 三、配置文件(application.properties
)
# 设置文件上传大小限制(可选)
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
✅ 四、主启动类(UploadDemoApplication.java)
package com.example.uploaddemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UploadDemoApplication {
public static void main(String[] args) {
SpringApplication.run(UploadDemoApplication.class, args);
}
}
✅ 五、控制器(UploadController.java)
package com.example.uploaddemo.controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.http.ResponseEntity;
import java.io.File;
import java.io.IOException;
@RestController
@RequestMapping("/article")
public class UploadController {
@PostMapping("/uploadLifeImage")
public ResponseEntity<String> handleFileUpload(@RequestParam("upload_file") MultipartFile file) {
if (file.isEmpty()) {
return ResponseEntity.badRequest().body("上传失败,文件为空");
}
try {
// 保存目录
String uploadDir = System.getProperty("user.dir") + "/uploads";
File dir = new File(uploadDir);
if (!dir.exists()) dir.mkdirs();
// 保存文件
String filePath = uploadDir + "/" + file.getOriginalFilename();
file.transferTo(new File(filePath));
return ResponseEntity.ok("上传成功,文件路径:" + filePath);
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.internalServerError().body("上传失败:" + e.getMessage());
}
}
}
✅ 六、运行项目
在 IDEA 或命令行执行:
mvn spring-boot:run
打开浏览器,创建一个
HTML
页面测试:
<form action="http://localhost:8080/article/uploadLifeImage" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file" />
<input type="submit" value="上传" />
</form>
✅ 七、上传结果
成功上传后文件保存在:
项目目录/uploads/文件名
浏览器返回提示:
上传成功,文件路径:...
运行效果: