我在ubuntu linux 16.04服务器的MSSQL Server上运行此查询:
SELECT binaryImage FROM mytable;
好吧,我已经检索了我的图像的二进制内容,并且在PHP中使用base64_encode()
函数可以显示图像。
"<img src='data:image/jpeg;base64,".base64_encode($binaryImage)."'/>"
效果很好。
但是当我在同一个数据库上运行相同的查询但是从Windows Server 2012 R2运行时,二进制内容不同,并且无法显示图像。
另外,我做了var_dump()
以查看在每种情况下检索哪些二进制内容,并且在Linux和Windows Server上有所不同。在im使用sqlsrv_pdo for php7。
我不知道发生了什么......我需要在Windows Server 2012 R2上运行。也许是编码或类似的东西?感谢。
编辑:左侧是Linux上的二进制内容,右侧是Windows Server上的二进制内容。在Linux上,它有~1.000.000个字符长度,在Windows上,如~2.000.000
EDIT2:连接信息。
$database = [
'ServerName' => 'localhost',
'Database' => 'db',
'UID' => 'user',
'PWD' => 'pass',
'CharacterSet' => "UTF-8"
];
$conn = new PDO(
"sqlsrv:server={$database['ServerName']};Database={$database['Database']}",
$database['UID'],
$database['PWD'],
array(
//PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);