如何在 Laravel PHP 中显示 SQLSRV 图像
Posted
技术标签:
【中文标题】如何在 Laravel PHP 中显示 SQLSRV 图像【英文标题】:How to display SQLSRV IMAGE in Laravel PHP 【发布时间】:2016-04-02 11:59:44 【问题描述】:我正在开发一个应用程序,该应用程序使用来自我只有读取权限的第 3 方服务器 (MS SQLSRV) 的数据。
该服务器上的图像存储为 IMAGE 数据类型。我使用 php (Laravel 5) 作为 AngularJS 前端的后端来显示图像。我不确定如何继续。
$students = DB::table('StudentImage')->where('STUDENTID', $id)->get();
$image = imagecreatefromstring($students[0]->IMAGE1); // unrecognized format error
我也试过这个:
$db = new PDO(...);
$stmt = $db->prepare("select IMAGE1 from [StudentImage] where [STUDENTID] = ?");
$stmt->execute([$id]);
$stmt->bindColumn('IMAGE1', $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
return response($lob, 200, ['Content-Type'=>'image/jpg']);
我得到的只是一张 20x20 的空白图片。但是,我可以在 Navicat(数据库管理工具)中看到图像。
我该如何进行?
【问题讨论】:
【参考方案1】:经过多次头撞后,我想通了。事实证明,SQL Server 中的“文本”字段有一个默认大小限制。您所要做的就是在运行SELECT
查询之前使用SET TEXTSIZE
命令“重置”大小:
<?php
DB::select('SET TEXTSIZE 10485760');
$students = DB::table('StudentImage')->where('STUDENTID', $id)->get();
$image = imagecreatefromstring($students[0]->IMAGE1);
?>
这会将最大大小设置为 10 MB,这应该足以显示您想要的图像。这可能是 Navicat 在运行查询之前预设的内容。
【讨论】:
以上是关于如何在 Laravel PHP 中显示 SQLSRV 图像的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel php 刀片后,如何让数据显示在浏览器中? [关闭]