【问题标题】:Laravel. Retrieve Image from SQLSERVER. Datatype: image拉拉维尔。从 SQL SERVER 检索图像。数据类型:图片
【发布时间】:2025-12-16 16:15:01
【问题描述】:

我正在尝试从 SQLServer 检索图像并将其显示在浏览器中,但它不起作用。有人能帮帮我吗?

  1. 控制器

    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 ) .'" height="100" width="100"/>';
       echo '<img src="data:image/jpeg;base64, ' . chunk_split(base64_encode($image)) .'" height="150" width="150"/>';
    
    
       return view("intel.viewFamily", ['queryPhoto'=> $queryPhoto[0]]);    }
    
  2. 浏览器上的结果:

我非常感谢任何帮助解决这个问题。 谢谢!

【问题讨论】:

  • 为什么将图像保存到数据库中?
  • 嗨,耶稣。不是我。不幸的是,这就是他们在我的工作场所这样做的方式。我们无法修改此政策。
  • 图像数据类型已被弃用近 15 年,现在支持 varbinary(max)。将图像直接存储在数据库中是一件非常痛苦的事情。
  • 是的,我同意你的看法,肖恩。如果可以的话,我会改变数据库,但我真的被这条规则束缚了......
  • 我同意你们的观点,另外这会占用更多存储空间,减慢 SQL 查询速度,并且如果您拥有这些功能,则很难将图像分享给其他方。

标签: sql-server laravel image blob


【解决方案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.'" />';

对我来说工作得很好。 谢谢。

【讨论】:

  • 您可以再次将图像上传到存储中吗?谢谢
最近更新 更多