springboot 上传图片
时间: 2024-12-30 11:34:04 浏览: 8
### 如何在 Spring Boot 中实现图片上传功能
#### 创建 Spring Boot 项目
为了开始,在开发环境中设置一个新的 Spring Boot 项目。可以利用 Spring Initializr 来快速搭建基础框架,选择必要的依赖项如 Web 和 Thymeleaf[^1]。
#### 配置文件调整
编辑 `application.properties` 或者 `application.yml` 文件配置服务器端口以及文件上传的最大尺寸等参数:
```properties
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
```
上述配置允许最大上传单个文件大小为 10 MB 并且整个请求的数据量不超过此限制[^2]。
#### 控制器编写
定义控制器处理 HTTP 请求并管理业务逻辑。下面给出一个简单的例子用于接收客户端提交过来的图像数据:
```java
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
public class ImageUploadController {
private static String UPLOAD_DIR = "uploads/";
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file, Model model) {
if (file.isEmpty()) {
model.addAttribute("message", "请选择要上传的文件");
return "index";
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get(UPLOAD_DIR + file.getOriginalFilename());
Files.write(path, bytes);
model.addAttribute("message", "成功上传 '" + file.getOriginalFilename() + "'");
} catch (IOException e) {
e.printStackTrace();
model.addAttribute("message", "失败: " + e.getMessage());
}
return "result";
}
}
```
这段代码展示了如何通过 POST 方法接受来自表单中的文件输入,并将其保存到指定目录下。
#### 前端页面设计
使用 Thymeleaf 编写 HTML 表格以便于用户交互。这里提供了一个基本的例子来说明怎样创建带有文件选择按钮和提交按钮的网页表单:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Image Upload</title>
</head>
<body>
<h2>Choose an image to upload:</h2>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file"/><br /><br />
<button type="submit">Submit</button>
</form>
<p th:text="${message}"></p>
</body>
</html>
```
这个表格会向 `/upload` 路径发送一个多部分编码形式的数据流,其中包含了所选文件的信息。
阅读全文