2013-07-23 3 views
0

Я загрузил фотографию в свою базу данных. Тип данных - BLOB. Теперь я хочу просмотреть это изображение в своем браузере. Я написал следующий код, но не создавал изображение. Просьба проверить это.Как просмотреть получение изображения из базы данных MySQL

Благодаря

<?php 

    include 'connect.php'; 
    //$id= $_GET['product_id']; 

    $query_images = "SELECT image FROM product_images WHERE product_id=121"; 

    if (!$query_images_result = mysql_query($query_images)) 
    { 
     echo mysql_error(); 
    } 
    else 
    { 

     $fetch_images = mysql_fetch_array($query_images_result); 

     $print_images = $fetch_images['image']; 

     header('Content-type:image/jpeg'); 

     echo $print_images; 
    } 

?> 

Файл 2

<body> 

<img src='single_product_image_show.php' alt="image" /> 

</body> 
+0

Любая конкретная причина для использования 'BLOB' для хранения изображений, а не только путь к изображению в базе данных? –

+0

Что происходит, когда вы посещаете 'single_product_image_show.php' напрямую – DevZer0

+0

см. Это один раз http://www.dreamincode.net/forums/topic/50895-display-image-from-mysql-database/page__view__findpost__p__350380 – nickle

ответ

0

Там находятся несколько возможных причин, почему это могло произойти. Сначала попробуйте свой скрипт напрямую без заголовка ('Content-type: image/jpeg'); так что вы можете видеть, что он действительно возвращает. Как и http: // [youhostname] /single_product_image_show.php, я предполагаю, что вы увидите некоторые ошибки.

Некоторые лучшие практики, чтобы служить изображения с PHP:

  • Если вы можете удалить конец PHP тега (>?). Вы на самом деле не нуждаетесь в этом, и вы можете избежать проблем, когда у вас есть символ пробела после тега close, который будет записан в ответ, и, следовательно, результат будет поврежден.
  • Вы также должны указать заголовок Content-Length. Это не обязательно, но браузер будет знать, насколько большой файл он должен загрузить.
  • Укажите некоторые заголовки управления кешем (https://en.wikipedia.org/wiki/List_of_HTTP_header_fields), чтобы браузеры могли кэшировать ваше изображение, чтобы оно не приводило к полной загрузке страницы и запросу mysql при каждом появлении изображения на сайте.
  • Вы можете сохранить ETag и/или Last-modified в базе данных, которые вы можете получить и поместить в заголовки.
+0

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

1

может быть что-то вроде этого? Вы можете использовать base64 encoding для построения изображения

FYI: NOT TESTED.

$sql = "SELECT `image` FROM `product_images` WHERE `product_id`=121 LIMIT 1"; 

$query_images_result = mysql_query($sql); 

    if (!$query_images_result) 
    { 
     echo mysql_error(); 
    } 
    else 
    { 

     list($print_images) = mysql_fetch_array($query_images_result); 

     $base64source = "data:image/jpeg;base64," . base64_encode($print_images); 
     echo '<img src="'.$base64source.'" alt="" />'; 
    } 
+0

Огромное вам спасибо, что он работает сейчас, но он показывает только часть изображения, а не весь образ. [Просьба проверить это] (http://postimg.org/image/5kq9lvztf) –

+0

- это все изображение загружено правильно? –

+0

Да, он был загружен успешно. –

Смежные вопросы