Чтение и запись изображения из или в базу данных

Я пытаюсь показать изображение, хранящееся в базе данных. Я написал это с

$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;  

Все работает нормально, но отображается только часть изображения. Я уменьшил размер изображения с 20 КБ до 2 КБ, и отображается гораздо больше, так что я думаю, ВСЕГДА двоичные данные обрезаются. Столбец базы данных - это varbinary(max)

Пожалуйста, давайте не будем обсуждать, целесообразно ли хранить блоб в базах данных:):)

2 ответа

Решение

Решением было увеличить максимально допустимую длину строки odbc в php.ini. Было установлено 4069 символов

  • Вы пытались определить свой столбец как BLOB (до 2 ГБ)?
  • Вы уверены, что полное изображение сохранено (возможно, эта функция неверна)
Другие вопросы по тегам