Я прочитал все возможные вопросы по 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"/>
Попробуй ниже
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