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

djibidl 38 Messages postés vendredi 5 février 2010Date d'inscription 16 mai 2013 Dernière intervention - 26 mai 2011 à 12:06 - Dernière réponse : 007Julien 279 Messages postés mercredi 22 septembre 2010Date d'inscription 8 janvier 2014 Dernière intervention
- 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

Répondre au sujet
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 26 mai 2011 à 13:03
+3
Utile
bonjour

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

a++

Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
inwebo 381 Messages postés lundi 12 novembre 2007Date d'inscription 23 octobre 2014 Dernière intervention - 26 mai 2011 à 14:36
+3
Utile
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();
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de inwebo
007Julien 279 Messages postés mercredi 22 septembre 2010Date d'inscription 8 janvier 2014 Dernière intervention - 26 mai 2011 à 17:38
0
Utile
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
djibidl 38 Messages postés vendredi 5 février 2010Date d'inscription 16 mai 2013 Dernière intervention - 27 mai 2011 à 21:49
0
Utile
@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
djibidl 38 Messages postés vendredi 5 février 2010Date d'inscription 16 mai 2013 Dernière intervention - 29 mai 2011 à 12:36
0
Utile
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
007Julien 279 Messages postés mercredi 22 septembre 2010Date d'inscription 8 janvier 2014 Dernière intervention - 29 mai 2011 à 21:13
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.