Comment afficher une image stocké dans la base de données??

Résolu
djibidl
Messages postés
38
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
16 mai 2013
- 26 mai 2011 à 12:06
007Julien
Messages postés
276
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

6 réponses

cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
26 mai 2011 à 13:03
bonjour

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

a++

Bonne programmation !
3
inwebo
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

26 mai 2011 à 14:36
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();
3
007Julien
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
4
26 mai 2011 à 17:38
Quel est ce nouvel attribut ?
encetype="multipart/form-data"

Peut-être qu'un
enctype="multipart/form-data" irait mieux !
0
djibidl
Messages postés
38
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
16 mai 2013

27 mai 2011 à 21:49
@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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djibidl
Messages postés
38
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
16 mai 2013

29 mai 2011 à 12:36
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
0
007Julien
Messages postés
276
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
4
29 mai 2011 à 21:13
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.
0