You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL Server存储二进制图片,Laravel中如何在img标签显示?

解决SQL Server varbinary(max)图片在Laravel中显示的问题

首先可以优化你的存储代码(更简洁可靠):
不需要把图片转成十六进制字符串再通过CONVERT存储,直接存入二进制数据即可:

$img = file_get_contents($request->file('image')->getRealPath());
$data->user_pic = $img;
$data->save();

正确的图片显示方法

你之前的显示代码错误使用了CRC32(这是生成校验码的函数,和图片原始数据无关),正确做法是直接对数据库取出的二进制图片数据做base64编码:

在Blade模板中可以这样写:

@if($user->user_pic)
    <img src="data:image/png;base64,{{ base64_encode($user->user_pic) }}" alt="User Picture">
@endif

原代码无效的原因

你用CRC32($user->user_pic)生成的是图片数据的校验值,并非图片本身的内容,后续的pack和base64编码自然无法还原出可显示的图片。直接对原始二进制数据做base64编码,就能得到正确的data URI。

如果图片格式不固定(比如可能是JPG、PNG等),建议存储时额外保存图片的MIME类型,显示时将image/png替换为对应的类型,兼容性会更好。

内容的提问来源于stack exchange,提问作者Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 07:45:16