图片怎么存到数据库里让springboot取出传给vue前端显示
时间: 2024-01-16 10:02:25 浏览: 205
web计算机网上销售系统(使用springboot作为后端,vue作为前端,mysql为数据库).zip
将图片存储到数据库中可能会影响数据库性能,建议将图片存储到服务器上,然后在数据库中存储图片的路径。以下是一些基本步骤:
1. 在数据库中创建一个表来存储图片信息,包括图片ID,图片名称,图片路径等。
2. 编写一个上传图片的接口,接收上传的图片,将图片存储到服务器上,并将图片信息存储到数据库中。
3. 编写一个获取图片的接口,根据图片ID或者其他条件从数据库中获取图片信息,获取到图片路径后,将图片读取出来并返回给前端。
4. 在前端页面中,通过调用获取图片的接口,获取到图片路径,然后将图片路径赋值给img标签的src属性,即可显示图片。
下面是一个简单的示例代码:
1. 图片信息表的创建语句:
```sql
CREATE TABLE `image` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`path` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
2. 上传图片的接口:
```java
@PostMapping("/upload")
public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) {
try {
// 将文件存储到服务器上
String fileName = file.getOriginalFilename();
String filePath = "D:/images/" + fileName;
File dest = new File(filePath);
file.transferTo(dest);
// 将图片信息存储到数据库中
Image image = new Image();
image.setName(fileName);
image.setPath(filePath);
imageService.save(image);
return ResponseEntity.ok().body("上传成功");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("上传失败");
}
}
```
3. 获取图片的接口:
```java
@GetMapping("/image/{id}")
public void getImage(@PathVariable("id") Integer id, HttpServletResponse response) {
try {
Image image = imageService.getById(id);
File file = new File(image.getPath());
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
response.getOutputStream().write(data);
} catch (Exception e) {
e.printStackTrace();
}
}
```
4. 在前端页面中显示图片:
```html
<img :src="'/image/' + imageId">
```
阅读全文