7
votes

Comment afficher l'image de la base de données dans CodeDigniter?

J'utilise la base de données de CodeDigniter 2.1.0 et MySQL. J'ai téléchargé une image via un formulaire et le stocké avec succès dans un répertoire de téléchargement et j'ai également enregistré avec succès le chemin complet de l'image dans ma base de données. Mais j'ai un problème de montrant l'image en appelant le chemin complet de ma base de données.

Voici mon code pour le téléchargement: p>

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


2 commentaires

Pourquoi stockez-vous le chemin complet comme C: /wamp/www/my_project/uploads/_1_.jpg ? Cela ne fonctionnera pas. Vous devez vous référer au chemin du serveur Web sur le serveur Web, pas le système de fichiers.


J'utilise $ image_path = realpath (AppPath. '../uploads'); obtenir le chemin réel dans la base de données. Si ce n'est pas la procédure standard, veuillez-vous le fournir?


3 Réponses :


2
votes

Contrôleur: xxx pré>

modèle: p> xxx pré>

Votre vue: p> xxx pré>

Modèle alternatif: P>

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


3 commentaires

Donc, dans votre fichier VEW, vous renvoyez votre contrôleur, votre méthode et votre ID d'image ..., le site ECHO_URL est utilisé pour afficher des images. Dans votre contrôleur, vous devez créer une méthode pour imprimer l'image. Cette méthode doit appeler le modèle d'image pour obtenir l'URL de l'image par une requête SQL


Pourquoi faites-vous en-tête ("Type de contenu: Image / JPEG"); Ceci? Il ne stocke pas l'image dans la DB. Il stocke le nom de l'image. L'image est stockée sur le système de fichiers. Et dans votre fonction getImage , si la ressource n'existe pas, retournez false pas ''


@Flukey pouvez-vous fournir une solution?



3
votes

Dans votre base de données, si j'ai bien compris, vous stockez l'image comme C: /wamp/www/my_project/uploads/_1_.jpg

Alors, lorsque vous échoez au chemin de l'image, l'attribut img src , vous aurez

qui ne fonctionnera pas comme un chemin local sur votre machine. Je n'aurai pas cette image sur mon système de fichiers. L'image doit être accessible sur le serveur Web. (comme votre fichier index.php)

Vous avez donc besoin du stockage de l'image comme suit:

téléchargements / _1_.jpg

et ensuite faire " />

ou stocker l'image comme:

_1_.jpg et et puis faire

" />

Edit: Pour être clair: où vous stockez, c'est correct. Mais, vous n'avez pas besoin du chemin complet de la DB, vous avez juste besoin du chemin du serveur Web.


0 commentaires

1
votes

Pour afficher des images dans le navigateur Web, vous devez donner une URL de cette image plutôt que le chemin de l'image.

Le code suivant n'affiche aucune image xxx

suivi Code URL utilisé de l'image, le nom du serveur localhost est donné, vous devez remplacer l'adresse de votre serveur avec localhost. xxx


0 commentaires