Изображение из базы данных MySQL не печатается - PullRequest
1 голос
/ 12 апреля 2011

Запрос и таблица HTML выводят $row["title"], дату и row["text1"] просто замечательно.Однако есть проблема с $row["file_data"], который должен быть изображением, хранящимся в базе данных MySQL.Он печатает большое количество символов из языков, отличных от английского, например, BMö26(šÀ2ÿÿÿÿÿÿÿÿ и т. Д. Для нескольких десятков строк.

Как мне сделать изображение отображаемым?

Заранее спасибо

1010 * Джон 1012 *

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Причина этого в том, что данные изображения, хранящиеся в базе данных, относятся к типу содержимого изображения, то есть это изображение, а не текст.

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

Что вам следует сделать, это создать отдельный файл с именем image.php и получить его для создания изображения от вашего имени.

например:

<?php

if(!empty($_GET['id']) && is_numeric($_GET['id']))
{
     //fetch the information for the database
     //if the blob data is of the content type image/gif for instance
     header('content-type: image/gif');
     echo $result['image_data'];
}

и затем на своей html-странице попросите файл image.php создать изображение для oyu.

 <img src="image.php=<?php echo $result['image_id'] ?>" />
1 голос
/ 12 апреля 2011

Это потому, что ваш браузер не понимает, что отправляемые вами данные - это изображение.Когда ваш веб-сервер отвечает на запрос, он указывает тип содержимого (следовательно, заголовок Content-Type), а ваша страница указывается в виде текста.Вот почему используются теги изображений: они дают вам возможность сказать «встроить этот другой ресурс в это место».Ваш код делает вывод двоичных данных изображения в виде текста на экран - не то, что вам нужно.

Вам нужно создать еще одну страницу PHP, например, getImage.php, которая принимает $Параметр _GET (т. Е. Идентификатор строки).Затем эта страница запросит базу данных и echo данные изображения, указав заголовок Content-Type.

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

header('Content-Type: image/png'); //change to the proper content type for your type of image

$imageID = mysql_real_escape_string($_GET['q']);

$result = mysql_query(sprintf('SELECT file_data FROM images2 WHERE id="%s" AND file_data IS NOT NULL LIMIT 1', $_GET['q']));

if(mysql_num_rows($result) !== 1)
{
  //a row wasn't found, so 404
  header('HTTP/1.0 404 File Not Found');
}
else
{
  $row = mysql_fetch_object($result);
  echo $row['file_data'];
}

Теперь, когда вы создаете свой HTML в существующем файле, вы должны сделать что-то вроде этого:

echo '<td class="sitename2"><img src="./getImage.php?q='.$row["id"].'"/></td>';

Настройка имен столбцов SQLсоответственно.

Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...