Problème d'affichage d'image BLOB

Fermé
Dzomo - 12 janv. 2011 à 12:58
Mireliria Messages postés 48 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 13 septembre 2013 - 13 sept. 2013 à 04:01
Bonjour,

Bonjour,

je suis en train de faire un projet qui consiste à télecharger une image depuis le navigateur d'un client et à l'intégrer à une base de données Mysql puis à pouvoir afficher l'image après. Malheureusement, la première partie c'est à dire l'insertion de l'image dans la base se passe sans problème. Cependant, je n'arrive pas à afficher l'image. J'ai donc besoins de vos apports. Merci de m'aider. Voici le code que j'ai écris et le resultat.
<?php
include('connexion.php');
$req="SELECT code_FS, Nom_FS FROM format_sanitaire";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
echo "<a href=\"apercu.php?id=".$col[0]."\">".$col[1]."</a><br />";
}
?>

sur la page appercu.php nous avons mis le code suivant:
<?php
if ( isset($_GET['id']) )
{
$id = $_GET['id'];
include('connexion.php');
$req="SELECT code_FS, Sign_Resp_Cmde, Type_fichier FROM format_sanitaire WHERE code_FS='".$id."'";
$ret = mysql_query ($req) or die (mysql_error ());
$coll = mysql_fetch_row ($ret);
if ( !$coll[0] )
{
echo "Formation sanitaire";
}else
{
header ("Content-type:".$coll[2]);
echo $coll[1];
}
}
else
{
echo "Mauvais id d'image";
}
?>

La page liste affiche les lien hypertext et lorsque on clic sur le lien pour afficher l'image, on obtient le résultat suivant selon le navigateur:

Lorsque j'essaie le code sous IE8, la page s'affiche mais l'image n'apparait pas mais visiblement, le navigateur indique qu'il il a une image qui devrait s'afficher. Une trace d'image apparait mais pas l'image.
Avec FireFox, Il n' y a pas de message c'est plutôt http://127.0.0.1/apercu.php?id=TC40123 qui s'affiche sur la page lorque je clic sur le nom de l'image.



A voir également:

6 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 janv. 2011 à 13:43
Bonjour,

> Malheureusement, la première partie c'est à dire l'insertion de l'image dans la base se passe sans problème.
Ah, là je peux t'aider :D

Trêve de plaisanteries, j'aurais quelques remarques :

1) ton lien ne marche pas, tu donnes l'adresse en local ;

2) essaie d'enlever la fonction header() pour récupérer le code binaire directement dans le navigateur, et dis-nous ce que tu trouves...

3) essaie d'écrire le contenu de $coll[1] dans un fichier, et ouvre le fichier en question avec ton visionneur d'image favori : est-ce qu'on y voit quelque chose ?

Xavier
0
Merci Xavier,

Lorsque j'enlève la fction header, il apparait une suite de caractère bizares (le code binaire sans doute).
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 janv. 2011 à 15:25
C'est plutôt bon signe : tu récupères bien l'image...
Ensuite, reste le problème de son affichage.
Qu'est-ce que tu mets exactement dans le header ?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 janv. 2011 à 15:27
Essaie de rajouter ça comme header :
header('Content-transfer-encoding: binary');
0
Merci Xavier,
J'ai mis ceci :header ("Content-type:".$coll[2]); $Coll[2] est la variable qui recupère le type du fichier enregistrer dans la base de données. Dans la base c'est apparu image/pjpeg.

Lorsque j'ai ajouté l'instruction : header('Content-transfer-encoding: binary');
il n' y a pas eu de changement. C'est le statu quo.

Merci de continuer à me fournir des pistes
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 janv. 2011 à 17:36
pjpeg ?
Il vient d'où ce "p" ?
Ce ne serait pas plutôt jpeg ?
0

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

Posez votre question
Lorsqu'on télécharge un fichier jpeg d'un navigateur IE, c'est le type de MIME qu'il créé. Cela veut dire Progressive JPEG. L'image pourra donc s'afficher progressivement. Dans tous les cas, lorsque tu demande à la base de stocker le type de fichier, c'est ce qu'elle met comme type pour les fichiers jpeg.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 janv. 2011 à 09:10
OK, merci pour la précision, je ne connaissais pas...
Je suis désolé mais je ne vais pas pouvoir t'aider plus sur ton problème, là, honnêtement, je ne vois pas d'où vient le problème...

Si, juste une dernière tentative : et si tu crées une page html dans laquelle tu mets juste la balise suivante :
<img src="apercu.php?id=xxx />
avec un id d'image existant.

Tu vois l'image ou non ?
0
Mireliria Messages postés 48 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 13 septembre 2013 3
13 sept. 2013 à 04:01
Salut j'ai le mm soucis pour afficher l'image : ça donne apercu.php ! Je récupère bien l'image mais le problème est uniquement affichage !! Faut il décoder en binaire ou garder le header ?

Voici mon code :
<?php
if ( isset($_GET['id']) )
{
$id = intval ($_GET['id']);
include ("connexion.php");
$req = "SELECT img_id, img_type, img_blob ".
"FROM images WHERE img_id = ".$id;
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
{
echo "Id d'image inconnu";
}
else
{
header ("Content-type: ".$col[1]);
header('Content-transfer-encoding: binary');
echo $col[2];//0 ou 2
}
}
else
{
echo "Mauvais id d'image";
}
?>
0