Android上传至MySQL的BLOB图片无法在PHP Web端显示求助
问题排查与解决方案
嗨,我来帮你搞定这个图片显示的问题!
先看核心问题所在:你的Android代码已经把图片转换成Base64编码字符串后上传到数据库了,但PHP端又对数据库里的内容做了一次base64_encode,导致重复编码,浏览器自然解析不了这个错误的Base64内容。
具体分析
- Android端:你通过
Base64.encodeToString(imageBytes, Base64.DEFAULT)把图片字节流转换成了Base64字符串,然后上传并存入MySQL的image字段。这意味着数据库里的image字段存储的已经是Base64编码后的内容。 - PHP端:你现在的代码里调用了
base64_encode( $row['image'] ),相当于对已经编码过的字符串再次编码,生成的内容完全不符合图片的Base64格式,所以浏览器无法渲染图片。
修正后的PHP代码
把多余的base64_encode去掉,直接输出数据库里的原始Base64字符串即可:
echo '<img src="data:image/jpeg;base64,'. $row['image'] .'" width="50px" height="50px"/>';
额外验证步骤
你可以打开phpMyAdmin查看image字段的内容,如果开头是类似/9j/4AAQSkZJRgABAQEAAAAAAAD/这样的Base64字符,就完全可以确认是重复编码的问题。另外也可以检查一下字段类型是否是TEXT或LONGTEXT,避免存储时内容被截断(不过你说上传功能正常,这个大概率没问题)。
内容的提问来源于stack exchange,提问作者user9438510
相关产品推荐
相关产品推荐

