springboot上传图片路径到数据库
时间: 2023-08-08 18:09:37 浏览: 122
首先,我们需要在数据库中创建一个表来存储图片的信息,包括图片名称、图片路径、上传时间等字段。
然后,在Spring Boot应用程序中,我们可以使用Spring的MultipartFile接口来处理上传的图片文件,并将其保存到本地磁盘上。
接下来,我们需要将图片的路径信息保存到数据库中。一种常见的方法是将图片路径保存到一个字符串类型的字段中。
以下是一个示例代码,演示如何上传图片并将其路径保存到数据库中:
1. 创建一个实体类 Image,用于映射数据库表:
```
@Entity
@Table(name = "image")
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "path")
private String path;
@Column(name = "upload_time")
private LocalDateTime uploadTime;
// getters and setters
}
```
2. 创建一个接口 ImageRepository,用于操作数据库中的 Image 表:
```
@Repository
public interface ImageRepository extends JpaRepository<Image, Long> {
}
```
3. 创建一个控制器 ImageController,用于处理上传图片的请求:
```
@RestController
@RequestMapping("/images")
public class ImageController {
@Autowired
private ImageRepository imageRepository;
@PostMapping("/upload")
public ResponseEntity<?> uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 保存图片到本地磁盘
String fileName = StringUtils.cleanPath(file.getOriginalFilename());
Path path = Paths.get("uploads/" + fileName);
Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
// 将图片信息保存到数据库中
Image image = new Image();
image.setName(fileName);
image.setPath(path.toString());
image.setUploadTime(LocalDateTime.now());
imageRepository.save(image);
return ResponseEntity.ok().build();
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
}
```
4. 在Spring Boot应用程序中配置上传文件的存储路径:
```
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=215MB
```
在以上示例代码中,我们使用了Spring Boot提供的MultipartFile接口来处理上传的图片文件,并使用了Files.copy()方法将图片保存到本地磁盘上。然后,我们将图片的路径信息保存到数据库中的Image表中。最后,我们在应用程序配置文件中设置了上传文件的存储路径和大小限制。
阅读全文