Springboot 框架怎么把图片存入Mysql
时间: 2024-01-30 18:03:51 浏览: 27
可以将图片以二进制的形式存入 Mysql 数据库中。以下是一个简单的 Spring Boot Controller 的示例代码:
```java
@RestController
public class ImageController {
@Autowired
private ImageRepository imageRepository;
@PostMapping("/image/upload")
public String uploadImage(@RequestParam("file") MultipartFile file) throws IOException {
Image image = new Image();
image.setName(file.getOriginalFilename());
image.setType(file.getContentType());
image.setPicByte(file.getBytes());
imageRepository.save(image);
return "Image uploaded successfully!";
}
@GetMapping("/image/{id}")
public ResponseEntity<byte[]> getImage(@PathVariable Long id) {
Image image = imageRepository.findById(id).orElse(null);
if (image == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok().contentType(MediaType.parseMediaType(image.getType()))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + image.getName() + "\"")
.body(image.getPicByte());
}
}
```
其中,Image 实体类包括名称、类型和二进制数据三个字段,用于保存图片相关信息:
```java
@Entity
@Table(name = "images")
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String type;
@Lob
private byte[] picByte;
// getters and setters
}
```
在上述代码中,uploadImage 方法用于上传图片,将图片转换为二进制数据并保存到 Mysql 数据库中;getImage 方法用于获取指定 id 的图片数据并返回给客户端。
需要注意的是,由于图片数据是以二进制形式存储在数据库中,因此在存储和读取图片时需要使用 Lob 注解来告知 JPA 框架该字段需要使用数据库的大字段类型(BLOB 或 CLOB)。