springboot上传图片到本地文件夹然后存储到数据库,前端使用
时间: 2024-01-08 17:04:47 浏览: 30
好的,下面是一个简单的示例代码,演示如何使用Spring Boot将图像上传到本地文件夹并将其存储到数据库中,然后在前端使用。
首先,您需要在您的Spring Boot项目中添加以下依赖项:
```xml
<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.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
```
然后,您需要编写一个Controller来处理上传请求。以下是一个示例代码:
```java
@RestController
@RequestMapping("/api")
public class ImageController {
@Value("${upload.path}")
private String uploadPath;
@Autowired
private ImageRepository imageRepository;
@PostMapping("/upload")
public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) throws IOException {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());
Path path = Paths.get(uploadPath + fileName);
Files.write(path, file.getBytes());
Image image = new Image(fileName, file.getContentType(), path.toString());
imageRepository.save(image);
return ResponseEntity.ok("File uploaded successfully");
}
}
```
在上面的代码中,我们首先使用@Value注释注入了一个名为“upload.path”的配置项,用于指定上传文件的存储路径。然后,我们注入了一个ImageRepository,用于将图像存储到数据库中。我们创建了一个名为“uploadImage”的POST请求处理程序,该处理程序使用@RequestParam注释来接收上传的文件。我们使用StringUtils.cleanPath()方法来确保文件名不包含任何非法字符,并使用Files.write()方法将文件写入本地文件夹中。我们创建了一个新的Image对象来保存文件的元数据和存储路径,并将其保存到数据库中。最后,我们返回一个成功的响应。
接下来,您需要编写一个Image实体类,用于将图像元数据存储到数据库中。以下是一个示例代码:
```java
@Entity
@Table(name = "images")
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 100)
private String name;
@Column(length = 100)
private String type;
private String path;
// constructors, getters and setters
}
```
在上面的代码中,我们创建了一个名为“images”的表,用于存储图像。我们使用@Id注释将id字段标记为主键,并使用@GeneratedValue注释指定自动生成主键值。我们还使用@Column注释指定了name和type字段的长度,并添加了一个path字段来存储图像的存储路径。
最后,您需要编写一个简单的前端页面来上传图像。以下是一个示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Upload Image</title>
</head>
<body>
<h1>Upload Image</h1>
<form action="/api/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<br><br>
<input type="submit" value="Upload">
</form>
</body>
</html>
```
在上面的代码中,我们创建了一个简单的HTML表单,用于上传图像。我们使用<form>元素指定了上传图像的URL和请求方法,并使用<input>元素添加了一个文件选择器和一个提交按钮。
希望这个示例能够帮助您了解如何使用Spring Boot将图像上传到本地文件夹并将其存储到数据库中,然后在前端使用。