Intereting Posts
Показать случайный DIV при каждой загрузке страницы (для модального модальности) OpenTBS: динамическое изменение цвета строк в таблице Получить общую разницу во времени между двумя датами, используя php Печать горизонтальной таблицы вместо вертикальной, используя PHP Увеличьте ограничение памяти Анализ XML-данных с помощью пространств имен в PHP Лучший способ случайного выбора пары ключей и значений из массива в PHP Объединить значения n массивов в php Как получить данные конфигурации в laravel в подпапке Мой PHP-код начинающей строки новой строки не перейдет к новой строке. Маленькая помощь? страница карты становится пустой после вставки php-кода Как использовать the_permalink () в wordpress, когда он завернут с помощью 'или' Географические координаты названия улиц Как сравнить прошедшее время между полями datetime? Получение объекта JSON путем вызова URL-адреса с параметрами в PHP

PHP / MySQL – показать изображение из blob

Я сделал php-страницу, где вы можете загружать изображения / файлы, которые будут сохранены в моей базе данных как тип «mediumblob». Теперь я застрял и не могу понять, как отображать эти изображения из базы данных. Я написал в кепках, где хотел бы распечатать изображения.

<?php $dbLink = new mysqli('127.0.0.1', 'root', '', 'test'); if(mysqli_connect_errno()) { die("MySQL connection failed: ". mysqli_connect_error()); } $sql = 'SELECT `id`, `name`, `mime`, `size`, `created`, `data` FROM `file`'; $result = $dbLink->query($sql); if($result) { // Kolla om det finns några filer i databasen if($result->num_rows == 0) { echo '<p>There are no files in the database</p>'; } else { echo '<table width="100%"> <tr> <td><b>Name</b></td> <td><b>Mime/type</b></td> <td><b>Size (bytes)</b></td> <td><b>Created</b></td> <td><b>Image</b></td> </tr>'; while($row = $result->fetch_assoc()) { echo " <tr> <td>{$row['name']}</td> <td>{$row['mime']}</td> <td>{$row['size']}</td> <td>{$row['created']}</td> //THIS IS WHERE I'M SUPPOSED TO PRINT OUT THE IMAGES </tr>"; } echo '</table>'; } } else { echo 'Error! SQL query failed:'; echo "<pre>{$dbLink->error}</pre>"; } echo '<p>Click <a href="index.html">here</a> to go back</p>'; // Close the mysql connection $dbLink->close(); ?> 

Это моя таблица в базе данных:

 CREATE TABLE `file` ( `id` Int Unsigned Not Null Auto_Increment, `name` VarChar(255) Not Null Default 'Untitled.txt', `mime` VarChar(50) Not Null Default 'text/plain', `size` BigInt Unsigned Not Null Default 0, `data` MediumBlob Not Null, `created` DateTime Not Null, PRIMARY KEY (`id`) ) 

Очень благодарен за любую помощь!

Если BLOB содержит двоичные данные изображения, вам нужно будет взять содержимое и, возможно, записать его в файл, в результате получится изображение.

  file_put_contents($path."path/to/image/".$row['name'], base64_decode($row['image'])); 

Затем вызовите его нормально. Конечно .. убедитесь, что файл существует до его написания 🙂

Кроме того, вы можете написать сценарий для прямого вывода изображения, как показано ниже.

Для этого есть два подхода:

Вы можете использовать встроенную кодировку base64. Вы можете сделать это так, чтобы ваши изображения были JPEG:

 echo '<td><img src="data:image/jpeg;base64,'.base64_encode($image);.' /></td>'; 

Следующим вариантом будет создание PHP-файла с именем image.php, который принимает идентификатор изображения в качестве параметра, а затем выводит изображение. Тогда ваш HTML будет выглядеть так:

 <td><img src="image.php?id={$row['id']}"></td> 

Во всяком случае, есть много ответов на этот вопрос. Возможно, вы посмотрите на это, например: мне нужна моя страница PHP, чтобы показать мой образ BLOB из базы данных mysql

Попробуй это;

 header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Transfer-Encoding: binary'); header('Content-length: '.$row['size']); header('Content-Type: '.$row['mime']); header('Content-Disposition: attachment; filename='.$row['name']); echo '<img src="'.$row['data'].'" />';