【发布时间】:2013-10-14 11:26:24
【问题描述】:
我尝试显示存储在数据库中的图像。我用
写的$image = file_get_contents($testPfad);
$dateigroesse = filesize($testPfad);
$arrData = unpack("H*hex", $image);
$data_string = "0x".$arrData['hex'];
$sql = "INSERT INTO EHS.dbo.T_Signaturen (UnterschriftsDateiName,UnterschriftsBild,Dateigroesse,terminID) VALUES (
'".$unterschriftsFileName."',
CONVERT(varbinary(max),'$data_string'),
'".$dateigroesse."',
'384_234')";
echo '<hr>'.$sql;
insert($sql);
使用此代码,我可以输出图像。
header("Content-type: image/jpeg");
$query = "SELECT Dateigroesse, CONVERT(varchar(max), UnterschriftsBild) as content_data FROM EHS.dbo.T_Signaturen WHERE ID = '10'";
$result = query($query);
$content = $result[1]["content_data"];
$filesize = $result[1]["Dateigroesse"];
$content = substr ($content, 2); // entfernt 0x
$content = pack("H*", $content);
print $content;
一切正常,但只显示图像的一部分。我将图像大小从 20kb 减小到 2kb,并且显示了更多内容,所以我认为二进制数据在任何地方都被剪切了。数据库列是 varbinary(max)
请不要讨论将 blob 存储在数据库中是否合理:) :)
【问题讨论】:
-
为什么要将图片保存在数据库中?保存到文件夹和保存路径到数据库不是更好吗?
-
因为安全原因和 php 设置是不可能的
标签: php tsql blob varbinarymax