Afficher sur une page html une image stockée dans une bdd

Résolu/Fermé
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 10 janv. 2013 à 10:55
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 17 janv. 2013 à 16:06
Bonjour,

J'ai des images jpeg stockées dans une bdd (stockées vraiment, pas simplement l'url). Je ne souhaite pas revenir sur le débat de savoir si c'est une bonne idée ou non, j'ai bien pesé le pour et le contre et c'est cela qui me convient le mieux.

Mon problème c'est l'affichage de l'image. J'ai essayé avec deux techniques (echo, et imagejpeg - d'ailleurs je ne connais pas la différence, si quelqu'un peut m'éclairer), et chacune me renvoie "impossible d'afficher l'image car elle contient des erreurs", suivi d'une longue suite de caractères.

Mon but n'étant pas d'afficher l'image toute seule dans une page, mais au sein d'une page HTML, je passe par un fichier php intermédiaire qui affiche l'image, auquel renvoie le src de l'image dans mon code HTML.

Je n'ai pas uploadé l'image dans la bdd en passant par un script php, mais directement dans phpmyadmin. Lorsqu'on crée un champ BLOB une option s'affiche pour uploader directement le ficher.

Je ne sais pas si mon problème vient de l'upload (direct dans phpmyadmin) ou de mes scripts.

Voilà mon code:

$acte est la variable qui contient le "flux (?)" binaire du fichier que l'on récupère dans la bdd.

Fichier php qui contient la requête qui récupère, entre autres, l'image, suivi du code HTML pour l'affichage de la page HTML et de l'appel de l'image:

$id_n = $_GET['id_n'];

mysql_connect("localhost", "root", "");
mysql_select_db("ma_base");
$reponse = mysql_query("SELECT *, FROM table WHERE id='$id_n'");
$donnees = mysql_fetch_array($reponse);
	
$acte = $donnees['acte_n'];

(...)

// appelle l'image, et je fait passer la variable $acte dans l'url
<img src="image_bdd.php?acte=<?php echo $acte; ?>" alt="blabla" />



Fichier intermédiaire "image_bdd.php" qui affiche l'image:
<?php
$acte = $_GET['acte'];

header ("content-type: image/jpeg");
imagejpeg($acte);				

// j'ai également essayé avec la variante:
echo $acte;					
?>

Voilà si quelqu'un à un idée du problème ça m'aiderait bien!

Merci d'avance :)



12 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 janv. 2013 à 16:55
passer toute l'image par GET ce n'est pas possible la limite autant que je me souvienne est de 255 caractères

Il y aurait aussi la solution de stocker l'image dans une variable de session
3
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
12 janv. 2013 à 11:33
Merci Alain! C'est ce que je me demandais (pour la limite de GET), et pour les variables de session je vais bucher ça, je n'ai pas encore appris le chapitre sur les sessions ;)

Merci encore de ton aide, si je trouve une solution je la posterai là :)
0