Как отобразить изображение из базы данных в CodeIgniter? - PullRequest
7 голосов
/ 07 февраля 2012

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

Вот мой код для загрузки:

$image_path = realpath(APPPATH . '../uploads');

$config = array(
    'allowed_types' => 'jpeg|png|gif|jpg', 
    'upload_path' => $image_path, 
    'max_size' => 2097152, 
    'overwrite' => TRUE, 
    'file_name' => '_' . $i . '_'
);

$this -> load -> library('upload', $config);

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

C:/wamp/www/my_project/uploads/_1_.jpg

Если я попробую

<img src="<?php echo $data['screenshot'];?>" />
//($data['screenshot'] refers to the image location retrieved from database)

это в моем файле просмотра, изображение не отображается. Что я делаю неправильно? Пожалуйста, кто-нибудь, скажите мне. Что такое стандартная процедура?

Ответы [ 3 ]

3 голосов
/ 07 февраля 2012

В вашей базе данных, если я правильно понял, вы сохраняете изображение как C:/wamp/www/my_project/uploads/_1_.jpg

Так что, когда вы выводите путь изображения к атрибуту img src, у вас будет

, который не будет работать как локальный путь на вашем компьютере.У меня не будет этого изображения в моей файловой системе.Изображение должно быть доступно на веб-сервере.(как ваш файл index.php)

Таким образом, вам нужно сохранить изображение как это:

uploads/_1_.jpg

, а затем выполните <img src="<?php echo $data['screenshot'];?>" />

Или сохраните изображение как:

_1_.jpg, а затем выполните

<img src="<?php echo sprintf("uploads/%s", $data['screenshot']);?>" />

РЕДАКТИРОВАТЬ: чтобы быть ясным: где вы храните, это правильно,Но вам не нужен полный путь в БД, вам просто нужен путь к веб-серверу.

2 голосов
/ 07 февраля 2012

Контроллер:

function displayimage($Id=FALSE){
if ($Id)) 
{
    $image = $this->MMarches->getImage($Id);
    header("Content-type: image/jpeg");
    print($image);
}        }

Модель:

function getImage($Id){
$data = '';
$Q = $this->db->query("SELECT photo FROM tableWHERE phptoID=".$Id);
if ($Q->num_rows())
{
    $data = $Q->row_array();
    $data = $data['MA_PHOTO']
    $Q->free_result();  
}
return $data;} 

Ваш взгляд:

src="<?php echo site_url("controller_name/display_image/$image_id"); ?>" 

АЛЬТЕРНАТИВНАЯ МОДЕЛЬ:

function getImage($Id){
$Q = $this->db->query("SELECT photo FROM tableWHERE phptoID=".$Id);
   if ($Q->num_rows())       {
           $data = $Q->row_array();
           $data = $data['MA_PHOTO'];
           $Q->free_result();  
   }    
   $size = $data->size();        
   $ret = $data->read($size);     
   return (isset($ret)) ? $ret : '';
 }
1 голос
/ 07 сентября 2012

Для отображения изображений в веб-браузере необходимо указать URL-адрес этого изображения, а не ПУТЬ изображения.

Следующий код не отображает изображения

<img src="C:/wamp/www/my_project/uploads/_1_.jpg"/> 

В следующем коде используется URL-адрес изображения. Здесь указано имя сервера localhost, необходимо заменить адрес сервера на localhost.

<img src="http://localhost/www/my_project/uploads/_1_.jpg"/> 
...