0

データベースに保存されている画像を表示しようとしています。で書きました

$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) です

ブロブをデータベースに保存することが合理的かどうかについては議論しないでください:) :)

4

2 に答える 2

1

解決策は、php.ini で odbc の最大許容文字列長を増やすことでした。4069文字に設定されました

于 2013-10-15T08:19:39.663 に答える