Comment afficher une image stocké dans la base de données?? [Résolu]

Messages postés
38
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
16 mai 2013
- - Dernière réponse : 007Julien
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
- 29 mai 2011 à 21:13
Bonjour,
Je réalise un tp dans lequel je dois manipuler des images jpeg et gif. La démarche pour l'insertion marche b1. Elle est fait avec un formulaire comme suite:
<form action="" method="post encetype="multi../data">
          

</form>
. à la récupération après la vérification de la taille et du type de l'image, l'insertion marche b1.

Mais lorsque j'essaye d'afficher l'image, j'aperçois une série de caractère incompréhensible au lieu de mon image.
Normalement lors de l'insertion, si on recupère le contenu de l'image avec
$val=get_file_contents($_FILES['nom_dans_le_formulaire']);
, l'affichage doit pouvoir se faire avec
echo $recuper_image;
après bien entendu la sélection de l'image dans la base avec
select contenu,...,... from table_Image where condition
.
L'affichage ne marche pas. Pourquoi?? Y a t-il une alternative??


djibi071
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8
3
Merci
bonjour

as tu un bout de code upload
comment stockes tu ton image dans un blob ou dans un repertoire

a++

Bonne programmation !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cod57
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014
3
Merci
Peut être une piste, n'oublie pas d'envoyer le header correct pour l'affichage des images, par exemple pour une image PNG

header( 'Content-Type: image/PNG');



________________________________________
( $toBe || !$toBe ) = $this->Question();

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de inwebo
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
0
Merci
Quel est ce nouvel attribut ?
encetype="multipart/form-data"

Peut-être qu'un
enctype="multipart/form-data" irait mieux !
Commenter la réponse de 007Julien
Messages postés
38
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
16 mai 2013
0
Merci
@007Julien Merci pour la signalisation de l'erreur, c'est juste une erreur de frappe.

@cod57 Oui j'en ai une, pourquoi???

@inwebo Merci, j'ai pas mit cette instruction, mais je vais l'essayer tt de suite.

merci à cous tous


djibi071
Commenter la réponse de djibidl
Messages postés
38
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
16 mai 2013
0
Merci
Finalement j'ai adopté la technique de stockage de l'image dans un répertoire et enregistrement de son nom dans la base de données.Là aussi, l'affichage marche pour les images dont le nom est stocké en un seul bloque c'est à dire sans espace. Mais dès qu'on inclus une espace dans le nom du genre (ma photo), l'image ne s'affiche pas.
Qu'est ce qui fait ça??


djibi071
Commenter la réponse de djibidl
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2
0
Merci
Les serveurs et notamment Apache ont horreur des espaces (et accents) dans les noms de fichiers. En toute hypothèse, la meilleure solution consiste à renommer les fichiers cela permet d'éviter les colisions en cas de doublons.

Une méthode consiste à faire appel à l'heure avec, à titre d'exemple

$tdy=gmdate('YmdHis');
$sfx=strtolower(strrchr($_FILES['leFichier']['name'],'.'));
   // Test sur les extensions autorisées

$fch="img_$tdz$sfx";
if (move_uploaded_file($_FILES['leFichier']['tmp_name'],"dir/".$fch) {
   // Tout va bien
}

Dans certains cas specifiques (*), il convient d'aller aux millisecondes ou de compléter avec un élément aléatoire type md5().

(*) Cas d'un enseignant, dont les élèves d'un atelier informatique enregistraient leurs travaux tous en même temps en fin de la séance.
Commenter la réponse de 007Julien