Просмотр блобов в формате base64 в HTML с помощью PHP - PullRequest
3 голосов
/ 14 декабря 2011

возникли проблемы. Я пытаюсь просмотреть изображение в кодировке base64, которое хранится на моем сервере в виде большого двоичного объекта.Я хочу просмотреть это либо с помощью тега изображения, либо отобразить его в виде HTML-файла, на который я могу сослаться с тегом изображения.

Проблема в том, что данные большого двоичного объекта неверно возвращаются с моего сервера.

    <?php

       $select = "SELECT `data` 
               FROM  `sandbox`.`photos` 
               WHERE `id` = 4
               LIMIT 0 , 1";

        $result = mysql_query($select, $connection);



         while($row = mysql_fetch_array( $result )){

           $blob_data = $row[0];

           echo "$blob_data";

           }

    ?>

Проблема в том, что это повторяет 5.533782782 * E.

Как мне просмотреть это как изображение?Нужно ли де-кодировать его?

Ответы [ 3 ]

4 голосов
/ 14 декабря 2011

Попробуйте это:

echo '<img src="data:image/png;base64,'.base64_encode($blob_data).'">';
0 голосов
/ 14 декабря 2011

Базы данных не являются творческими - они хранят данные, которые вы вводите, в точности так, как вы их вводите, а затем извлекаете эти точные данные.

Это означает, что если вы кодируете данные в base64, прежде чем вставить ихвам придется декодировать из base64, чтобы получить значимую информацию.


Примечание: вам, вероятно, лучше хранить файл как изображение в файловой системе и путь к файлу в вашей базе данных, а не просто помещатьизображение непосредственно в вашу базу данных

Вы можете использовать любой путь к файлу, который хотите, даже вне корня документа (хотя следует соблюдать осторожность, чтобы не разрешить обход / отображение конфиденциальных файлов):

while($row = mysql_fetch_array( $result )){

  $file_path = $row[0];

  echo file_get_contents($file_path);

}
0 голосов
/ 14 декабря 2011

Вы можете использовать функцию mysql cast или convert .Вы также можете попробовать bin2hex PHP функцию.

...