база данных — PHP показать изображение как BLOB mysqli

Я прочитал все возможные вопросы по StackOverflow, я спросил всех людей, которых я знаю, и никто не может мне помочь.
У меня есть таблица в базе данных:

CREATE TABLE IF NOT EXISTS `zdjecia` (
`id` int(11) NOT NULL,
`imie_wlasciciela` varchar(50) NOT NULL,
`zdjecie` blob NOT NULL,
`nazwa` varchar(50) NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16

Я извиняюсь за отсутствие английских переменных, но я хочу сохранить весь источник без изменений.
imie_wlasciciela а также nazwa не важны в моей проблеме.
Так zdjecie это двоичные данные изображения
А также id это идентификатор

У меня есть файл, который должен показать изображение.

// single_image.php

<?php

if (isset($_GET['id']))
{
include('../connect.php'); // connect to database
$id = $_GET['id'];
$ret = $conn->query("SELECT * FROM zdjecia WHERE id=$id");
$row = $ret->fetch_assoc();
header("Content-type: image/png");
echo $row['zdjecie'];
// echo $row['nazwa']; // correct the result.
}
?>

И в моем браузере URL я вставляю … / single_image.php? Id = 8

Моя проблема не в отображении изображений, у меня в базе данных несколько изображений. Я могу загрузить его с помощью / phpmyadmin в XAMPP, и это правильное изображение, но моя страница не отображает его правильно,
Каждый раз, когда я вижу значок сломанного изображения.

Для файла single_image.php установлено значение no-bomb и Code-Page 1250 (для Центральной Европы).

Когда я проверяю результат по $row['nazwa']и прокомментировал header("Content-type...") линия показывает правильно varchar(50) из базы данных.

Я использую это как написано несколько строк выше, или в HTML, <img src="single_image.php?id=8"/>

2

Решение

Попробуй ниже

echo '<img src="data:image/png;base64,'.base64_encode( $row['zdjecie'] ).'"/>';

Для лучшего обслуживания вы можете добавить data:image/png;base64 в качестве заголовка только echo base64_encode( $row['zdjecie'] ) это будет работать для single_image.php?id=$id

2

Другие решения

  1. Не храните изображения в БД, это самоубийство.
  2. Не делайте ваш код уязвимым для SQLinjection.
  3. Если вы должны хранить файлы в БД, храните тип контента. Может это не png? Или, может быть, вы распечатали предупреждение / уведомление? Это сломает ваш образ.
-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector