springboot文件上传URL到数据库
时间: 2023-12-22 09:05:38 浏览: 94
使用Springboot上传图片并将URL保存到数据库中
5星 · 资源好评率100%
首先需要在Spring Boot项目中添加文件上传的依赖,例如:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
```
然后需要创建一个实体类来存储上传的文件信息,例如:
```java
@Entity
@Table(name = "files")
public class FileModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "file_name")
private String fileName;
@Column(name = "file_type")
private String fileType;
@Lob
@Column(name="data")
private byte[] data;
// 省略构造函数、getter和setter方法
}
```
然后需要创建一个控制器来处理文件上传请求,例如:
```java
@Controller
public class FileController {
@Autowired
private FileRepository fileRepository;
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
FileModel fileModel = new FileModel();
fileModel.setFileName(file.getOriginalFilename());
fileModel.setFileType(file.getContentType());
fileModel.setData(file.getBytes());
fileRepository.save(fileModel);
return "redirect:/";
}
// 省略其他方法
}
```
最后需要创建一个用于显示上传文件的页面,例如:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form method="post" enctype="multipart/form-data" action="/upload">
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>
<h2>已上传文件列表</h2>
<table>
<tr>
<th>ID</th>
<th>文件名</th>
<th>文件类型</th>
<th>操作</th>
</tr>
<tr th:each="file : ${files}">
<td th:text="${file.id}" />
<td th:text="${file.fileName}" />
<td th:text="${file.fileType}" />
<td><a th:href="@{/download/{id}(id=${file.id})}">下载</a></td>
</tr>
</table>
</body>
</html>
```
以上代码中,`FileRepository`是一个JPA仓库接口,用于对文件信息进行 CRUD 操作。`@RequestParam`注解用于接收上传的文件,`@PostMapping`注解用于处理文件上传请求。在上传文件时,先创建一个`FileModel`对象,将上传的文件信息设置到对象中,然后调用`fileRepository.save()`方法将对象保存到数据库中。在显示已上传文件的列表时,使用Thymeleaf模板引搭配`th:each`指令迭代文件列表,使用`<a>`标签创建下载链接,通过`@{/download/{id}(id=${file.id})}`表达式指定下载链接的URL,并且将文件的ID作为参数传递。
阅读全文