苍穹外卖中菜品图片无法回显的bug

解决菜品图片无法回显的Bug

本以为是aliyunoss的问题, 后来尝试传了个图片, 发现可上传, 但是不能回显. 

也就是在delectDishById方法中的问题, 看了数据库, 果然image和description列都为null. 后检查DishMapper.xml发现是动态sql中直接ai生成忘记加上这两个列了.

### 实现图片本地回显功能的方法 在Web开发中,图片的本地回显功能通常涉及将服务器端存储的图片文件通过HTTP请求返回给前端进行展示。以下是几种常见的实现方式: 1. **基于Spring Boot实现图片本地回显** 在Spring Boot应用中,可以通过定义一个控制器方法来读取本地存储的图片文件,并将其以`ResponseEntity`的形式返回给前端。例如: ```java @GetMapping("/image/{imageName}") public ResponseEntity<Resource> getImage(@PathVariable String imageName) { Path imagePath = Paths.get("path/to/images", imageName); Resource resource = new UrlResource(imagePath.toUri()); if (resource.exists() || resource.isReadable()) { return ResponseEntity.ok() .contentType(MediaType.IMAGE_JPEG) .body(resource); } else { throw new RuntimeException("Image not found"); } } ``` 这种方式通过HTTP请求直接返回图片资源,前端可以通过`<img src="/image/imageName.jpg">`来显示图片[^1]。 2. **使用Base64编码传输图片** 如果需要将图片数据直接嵌入到HTML或JSON响应中,可以将图片转换为Base64编码。以下是一个将字节数组转换为Base64字符串的Java方法: ```java public String BytesToBase64String(byte[] buffer) { StringBuilder result = new StringBuilder(); int length = buffer.length; int index = 0; for (index = 0; (index + 3) < length; index += 3) { byte[] temp = {buffer[index], buffer[index + 1], buffer[index + 2]}; result.append(ConvertByte3ToString(temp)); } if (length % 3 == 1) { byte[] temp = {buffer[length - 1]}; result.append(ConvertByteToString(temp)); } else if (length % 3 == 2) { byte[] temp = {buffer[length - 2], buffer[length - 1]}; result.append(ConvertByte2ToString(temp)); } return result.toString(); } ``` 前端可以通过`<img src="data:image/jpeg;base64,base64EncodedString">`来显示Base64编码的图片[^3]。 3. **前端直接访问本地文件** 在某些情况下,如果前端需要直接访问本地文件系统中的图片,可以通过设置图片的`src`属性为本地文件路径来实现。例如: ```html <img src="file:///path/to/image.jpg"> ``` 这种方式通常适用于本地开发环境,但在生产环境中由于安全限制,可能无法直接访问本地文件系统[^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值