PHP如何输出base64图片数据适配固定jQuery图片加载脚本
PHP实现代码
<?php // 此处保留你原本生成/获取$snap变量的逻辑即可 // $snap = 'data:image/jpeg;base64,/9j/4AAA...'; // 拆分base64前缀和纯内容 $snapArr = explode(',', $snap); $pureBase64 = $snapArr[1]; // 判断是否为前端AJAX请求(URL携带getImage参数) if (isset($_GET['getImage'])) { // 适配前端脚本:直接返回不带前缀的纯base64内容 header('Content-Type: text/plain; charset=utf-8'); // 缓存规则可按需调整 header('Cache-Control: no-cache, no-store, must-revalidate'); echo $pureBase64; } else { // 直接访问场景:输出二进制图片,效果和打开jpg文件一致 header('Content-Type: image/jpeg'); // 可选配置:用户右键保存时默认显示jpg后缀文件名 header('Content-Disposition: inline; filename="example.jpg"'); header('Cache-Control: public, max-age=31536000'); echo base64_decode($pureBase64); } // 终止后续输出,避免多余内容污染返回结果 exit; ?>
注意事项
- 确保
$snap的格式固定为data:image/jpeg;base64,开头,如果你的实际场景可能出现png等其他格式,需要提前解析前缀里的mime类型,对应调整直接访问场景的Content-Type值 - 代码执行前不要有任何多余输出(包括PHP标签外的空格、换行、BOM头),否则会破坏base64内容或者图片二进制结构
- 前端脚本拼接时已经固定写死了
data:image/jpeg;base64,前缀,所以返回给AJAX请求的内容一定不能带前缀,否则会导致图片加载失败
内容的提问来源于stack exchange,提问作者روح الله محمدزاده
相关产品推荐
相关产品推荐

