7

Sto usando CodeIgniter 2.1.0 e il database MySQL. Ho caricato un'immagine tramite un modulo e l'ho salvata con successo in una directory di upload e ho anche memorizzato con successo il percorso completo dell'immagine nel mio database. ma sto avendo problemi a mostrare l'immagine chiamando il percorso completo dal mio database.Come visualizzare l'immagine dal database in CodeIgniter?

Ecco il mio codice per l'upload:

$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); 

Quando sto memorizzare il percorso completo dell'immagine nel mio database, sembra qualcosa di simile

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

Se provo

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

questo nel mio file di visualizzazione, nessuna immagine viene visualizzata. Che cosa sto facendo di sbagliato? Per favore qualcuno me lo dica. Qual è la procedura standard?

+0

Perché stai memorizzando il percorso completo come 'C:/wamp/www/my_project/uploads/_1_.jpg'? Quello non funzionerà. È necessario fare riferimento al percorso sul server web, non al file system. – Flukey

+0

sto usando $ image_path = realpath (APPPATH. '../uploads'); per ottenere il percorso reale nel database. se non è la procedura standard, la prego di fornirla? – Shabib

risposta

3

Nel database, se ho capito bene, si sta memorizzare l'immagine come C:/wamp/www/my_project/uploads/_1_.jpg

Così, quando stai facendo eco il percorso dell'immagine l'attributo img src, si avrà

che ha vinto funziona come questo come percorso locale sulla tua macchina. Non avrò quell'immagine sul mio file system. L'immagine deve essere accessibile sul server web. (Come il vostro file index.php)

quindi è necessario il negozio l'immagine sia come questo:

uploads/_1_.jpg

e poi fare <img src="<?php echo $data['screenshot'];?>" />

immagazzinare l'immagine come:

_1_.jpg e e quindi fare

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

MODIFICA: Per essere chiari: la posizione in cui si sta memorizzando è corretta. Ma non è necessario il percorso completo nel DB, è sufficiente il percorso del server web.

+1

grazie :) ora funziona @flukey – Shabib

2

Controller:

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

Modello:

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;} 

tuo Vista:

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

ALTERNATIVA MODELLO:

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

spiegheresti un po 'il codice. – Shabib

+0

Quindi, nel tuo file di vew, fai riferimento al tuo controller, metodo e id immagine ..., l'echo site_url è usato per visualizzare le immagini. Nel controller, è necessario creare un metodo per stampare l'immagine. Questo metodo deve chiamare il modello immagine per ottenere l'url immagine da una query sql – coppettim

+1

Perché stai facendo l'intestazione '(Tipo di contenuto: immagine/jpeg"); 'questo? non sta memorizzando l'immagine nel DB. Sta memorizzando il nome dell'immagine. L'immagine è memorizzata nel file system. E nella tua funzione 'getImage', se la risorsa non esiste, restituisci' false' not '''' – Flukey

1

Per la visualizzazione delle immagini nel browser Web è necessario fornire l'URL di quell'immagine anziché il PERCORSO dell'immagine.

seguito il codice non mostra alcuna immagine

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

Seguendo codice URL utilizzato dell'immagine, Ecco il nome del server localhost è dato, si deve sostituire l'indirizzo del server con localhost.

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