拉拉维尔。从 SQL SERVER 检索图像。数据类型:图片
Posted
技术标签:
【中文标题】拉拉维尔。从 SQL SERVER 检索图像。数据类型:图片【英文标题】:Laravel. Retrieve Image from SQLSERVER. Datatype: image 【发布时间】:2018-12-19 13:23:28 【问题描述】:我正在尝试从 SQLServer 检索图像并将其显示在浏览器中,但它不起作用。有人能帮帮我吗?
控制器
public function viewFamily()
$queryPhoto = IDF_FOTO::select('FOT_BLO_IMG_FOTO')->where('ID_PROCESSO', '123456')->get();
$image = $queryPhoto[0]->FOT_BLO_IMG_FOTO;
echo '<img src="data:image/jpeg;base64,' . base64_encode( $image ) .'" />';
echo '<img src="data:image/jpeg;base64, ' . chunk_split(base64_encode($image)) .'" />';
return view("intel.viewFamily", ['queryPhoto'=> $queryPhoto[0]]);
浏览器上的结果:
我非常感谢任何帮助解决这个问题。 谢谢!
【问题讨论】:
为什么将图像保存到数据库中? 嗨,耶稣。不是我。不幸的是,这就是他们在我的工作场所这样做的方式。我们无法修改此政策。 图像数据类型已被弃用近 15 年,现在支持 varbinary(max)。将图像直接存储在数据库中是一件非常痛苦的事情。 是的,我同意你的看法,肖恩。如果可以的话,我会改变数据库,但我真的被这条规则束缚了...... 我同意你们的观点,另外这会占用更多存储空间,减慢 SQL 查询速度,并且如果您拥有这些功能,则很难将图像分享给其他方。 【参考方案1】:我刚刚在另一个主题中找到了解决方案:https://***.com/a/47756897/6157142。 需要将HEX转成String,然后base64编码。
$queryPhoto = IDF_FOTO::select('FOT_BLO_IMG_FOTO')->where('ID_PROCESSO', '123456')->get();
$string = pack('H*', $queryPhoto[0]->FOT_BLO_IMG_FOTO);
$string = base64_encode($string);
echo '<img src="data:image/jpg;base64,'.$string.'" />';
对我来说工作得很好。 谢谢。
【讨论】:
您可以再次将图像上传到存储中吗?谢谢以上是关于拉拉维尔。从 SQL SERVER 检索图像。数据类型:图片的主要内容,如果未能解决你的问题,请参考以下文章
拉拉维尔; “SQLSTATE [HY000] [2002] 连接被拒绝”