下面是关于“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-web</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2. 编写 Controller
编写 Controller,实现文件上传的功能。这里我们将允许用户上传一张图片文件,并将其保存在项目根目录下的 uploads
目录中:
@RestController
public class FileUploadController {
@Value("${file.upload.path}")
private String uploadDir;
// 跳转到文件上传页面
@GetMapping("/upload")
public String toUploadPage() {
return "file-upload";
}
// 实现文件上传功能
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file, Model model) {
String fileName = file.getOriginalFilename();
File dest = new File(uploadDir + fileName);
try {
file.transferTo(dest);
model.addAttribute("msg", "文件上传成功!");
} catch (IOException e) {
e.printStackTrace();
model.addAttribute("msg", "文件上传失败:" + e.getMessage());
}
return "file-upload";
}
}
3. 配置上传文件保存的目录
在 application.properties
文件中配置上传文件保存的目录:
file.upload.path=/uploads/
4. 实现文件上传页面
最后,我们需要实现一个文件上传的页面,让用户能够方便地上传图片。具体实现如下:
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br><br>
<input type="submit" value="上传">
</form>
<p th:text="${msg}"></p>
</body>
</html>
示例1:上传单个文件
下面是一个简单的上传单个文件的示例:
- 启动 SpringBoot 项目;
- 访问
http://localhost:8080/upload
,跳转到文件上传页面; - 选择一张图片文件,并点击“上传”按钮;
- 如果上传成功,页面上会显示“文件上传成功!”的提示信息;
- 查看项目根目录下的
uploads
目录,如果上传的图片文件已经出现在该目录中,说明文件上传成功。
示例2:上传多个文件
上传多个文件的过程跟上传单个文件差不多,只是在 HTML 文件中修改了文件上传的 input 属性,使其允许上传多个文件。具体实现如下:
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple><br><br>
<input type="submit" value="上传">
</form>
<p th:text="${msg}"></p>
</body>
</html>
完成多个文件上传的流程跟上传单个文件的流程类似。注意,在 Controller 中需要将文件处理的逻辑修改为循环处理多个文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot实现图片上传功能 - Python技术站