springBoot项目的文件上传模块详细代码 详细回答
时间: 2023-05-28 17:04:27 浏览: 80
Spring Boot项目的文件上传模块主要涉及到两个方面:前端页面的选择文件和提交表单,以及后端的文件上传处理。
前端页面部分:
1. 在HTML页面中添加一个表单,用于文件上传:
```html
<form method="POST" enctype="multipart/form-data" action="/upload">
<div class="form-group">
<label for="file">选择文件:</label>
<input type="file" name="file" id="file">
</div>
<button type="submit" class="btn btn-primary">上传</button>
</form>
```
2. 在Spring Boot的Controller中处理文件上传请求:
```java
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件存储路径
String filePath = "D:/upload/";
try {
// 将文件保存到指定路径
file.transferTo(new File(filePath + fileName));
return "上传成功!";
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败!";
}
```
后端部分:
1. 在pom.xml中添加依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
2. 在Spring Boot的启动类上添加注解@EnableWebMvc:
```java
@SpringBootApplication
@EnableWebMvc
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
3. 在Controller中添加@RequestMapping注解和处理文件上传请求的方法:
```java
@Controller
public class FileUploadController {
@RequestMapping("/upload")
public String fileUpload(@RequestParam("file") MultipartFile file, Model model) {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件存储路径
String filePath = "D:/upload/";
try {
// 将文件保存到指定路径
file.transferTo(new File(filePath + fileName));
model.addAttribute("msg", "上传成功!");
} catch (IOException e) {
e.printStackTrace();
model.addAttribute("msg", "上传失败!");
}
return "uploadResult";
}
}
```
4. 添加视图解析器,用于返回上传结果页面:
```java
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/uploadResult").setViewName("uploadResult");
}
}
```
5. 在resources/templates/目录下添加上传结果页面uploadResult.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>上传结果</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>
```