我正在尝试检索存储在MSSSQL数据库中的图像。
以0xFFE896格式存储....
当我查询数据库的其他表时,它工作正常,但当我用图像查询表时,我遇到了编码问题。
使用SQL Image Viewer可以很好地显示图像。
要进行连接,我使用的是最新的SQLSRV_Connection。
代码:
$serverName = "192.100.2.2";
$connectionInfo = array( "Database"=>"test", "UID"=>"tester", "PWD"=>"11111","CharacterSet" =>"UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
查询表格:
$tsql = "SELECT * FROM Docs WHERE DocId = 12222";
$stmt = sqlsrv_query($conn, $tsql);
获取值:
if ( sqlsrv_fetch( $stmt ) )
{
$image = sqlsrv_get_field( $stmt, 3,
SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY));
header("Content-Type: image/jpg");
fpassthru($image);
如果我回应图像,我会得到一个巨大的“字符串”,充满了?
结果为空<img>
10x10。
如果我在BD中存储了十六进制字符串,为什么会发生这种情况? 我不能改变Bd :(
mb_check_encoding($image)
发送错误,“期望参数1为字符串,资源给定”。