Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中显示MSSQL中存储为varbinary(MAX)数据类型的图像_Php_Sql Server - Fatal编程技术网

如何在PHP中显示MSSQL中存储为varbinary(MAX)数据类型的图像

如何在PHP中显示MSSQL中存储为varbinary(MAX)数据类型的图像,php,sql-server,Php,Sql Server,如标题所述,我很难显示图像。代码从数据库中提取数据,并将其显示为一组无意义的字符。该字段是varbinary(MAX)数据类型。我尝试过使用JPEG头,因为只允许将JPEG文件保存到数据库,并回显$row变量($row是存储图像的列的位置),但它没有输出任何内容。在PHP中,是否有标准的方法将varbinary(MAX)数据类型中的二进制数据显示为图像 PHP输出 PHP代码 <?php $servername = "MAINSERVER\SQLEXPRESS"; $dbname = "

如标题所述,我很难显示图像。代码从数据库中提取数据,并将其显示为一组无意义的字符。该字段是varbinary(MAX)数据类型。我尝试过使用JPEG头,因为只允许将JPEG文件保存到数据库,并回显$row变量($row是存储图像的列的位置),但它没有输出任何内容。在PHP中,是否有标准的方法将varbinary(MAX)数据类型中的二进制数据显示为图像

PHP输出

PHP代码

<?php
$servername = "MAINSERVER\SQLEXPRESS";
$dbname = "SqlFileStream";
$conn = sqlsrv_connect($servername) or die('Cannot connect to database');
$stmt = sqlsrv_query($conn, 'SELECT * FROM [VarbinaryTest]') or die(print_r( sqlsrv_errors(), true));
while ($row = sqlsrv_fetch_array($stmt))
{
echo '<br />';
echo 'Model: '.$row['model'];
header('Content-type: image/JPG');
echo $row['Data'];
}
sqlsrv_free_result($stmt);
?>


您不能将

型号:…
与表示图像的二进制数据一起发送。此外,正确的mime类型是
image/jpeg
。您只能发送:1)标题说明内容,并将传输编码设置为二进制;2)回显单个图像的二进制内容,您不能将多个图像粘贴在那里。要添加到N.B.的评论中,我认为您应该认真重新考虑将图像保留在数据库中。尤其是在使用PHP时,因为它使拉出和显示这些图像变得非常困难。在ASP.NET MVC中有更多的方法来处理这个问题。此外,考虑到每个响应只能发送一个图像(如N.B所说),响应具有MIME类型,并且每个新图像是对数据库的新查询和作为响应的新二进制输出。