PHP отображать изображение из базы данных (средний блоб) - PullRequest
3 голосов
/ 05 января 2012

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

способ отображения изображений: image

код, который я использую для отображения изображения (image.php):

 <?php session_start();
 if(!isset($_GET['image']))
 {
     header("HTTP/1.0 404 Not Found");
 }
 else{
     $link = mysql_connect('localhost', '45345345435435345', 'wewfsersdfds');
            if (!$link) {
                echo "error";
                die;
            }

            $db_selected = mysql_select_db(Tha base, $link);
            if (!$db_selected) {
                echo "error";
                die;
            }
 $nummer=(int)trim(stripslashes($_GET['image']));
 $mynr=$nummer;
 $sql="SELECT * FROM Foto WHERE fotonr=$mynr";
 $result=mysql_query($sql);
 if(!$result)
 {
     echo "error".mysql_error();
     header("HTTP/1.0 404 Not Found");
 }
 else
 {

     $foto = mysql_fetch_assoc($result);

     header("Content-type: ".$foto['type']);
     echo $foto['image'];


 }
 }
 ?>

Я уже много пробовал, но это не сработает :( я обновил код до последней версии. Ошибка с sql (ничего не выбрано / никогда не выполняется mysql_real_escape_string int)

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

Может ли кто-нибудь мне помочь?

Спасибо за ваше время!

Ответы [ 3 ]

2 голосов
/ 06 января 2012

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

$fp = fopen($image_path, 'r');
$image = fread($fp, filesize($image_path));
$image = addslashes($image);
fclose($fp);

// save $image into DB.

Не уверен, что вы делаете подобное с file_get_contents.То, как я вывожу, похоже на то, как вы это делаете, только я использую ORM и фреймворк.

2 голосов
/ 05 января 2012

Я подозреваю, что ваша проблема в преобразовании - возможно, между строками и изображениями или между различными форматами изображений.

Вы пытались сохранить изображение, полученное с помощью image.php, и сравнить двоичный файл с заведомо исправным файлом изображения? Возможно, как только вы это сделаете, ответ будет очевиден (например, неправильная длина, поврежденный заголовок и т. Д.)

Возможно, вы захотите рассмотреть другую запись в базе данных. Большинство БД поддерживают хранение данных двоичных двоичных объектов, которые вы могли бы проще вернуть. Это было бы проще (и заняло бы меньше места в вашей БД!), Чем использование функций php для stringify и imagecreatefromstring.

Кроме того, я считаю, что вы пытаетесь использовать imagegif, imagejpeg, imaging для выполнения преобразования формата изображения для вас. Это не то, как я понимаю, как они работают, основываясь на моем чтении по адресу: http://php.net/manual/en/function.imagecreatefromstring.php. Попробуйте сохранить и извлечь тот же формат, чтобы определить, является ли это вашей проблемой.

Попробуйте посмотреть на Content-type. Я думаю, что это чувствительно к регистру. Попробуйте Content-Type. http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

0 голосов
/ 09 июня 2015
$sql = "SELECT * FROM Foto WHERE fotonr=$mynr";
        $result = $conn -> query($sql);
        while ($row = $result -> fetch_assoc()) {
        $img= '<img src="data:image/jpeg;base64,'.base64_encode(                        $row['image'] ).'"  width=350px0px height=300px/>';
}
echo $img;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...