拉拉维尔。从 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] 连接被拒绝”

显示功能不起作用。无法按 id 检索元素。拉拉维尔 5.8

拉拉维尔 |雄辩的 foreach 不起作用

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

将数据从一个模型加载到另一个模型,空数组。拉拉维尔