Problème d'affichage d'image BLOB
Dzomo
-
Mireliria Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
Mireliria Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Problème d'affichage d'image BLOB
- Image iso - Guide
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Reduire taille image - Guide
6 réponses
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
> 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
Merci Xavier,
Lorsque j'enlève la fction header, il apparait une suite de caractère bizares (le code binaire sans doute).
Lorsque j'enlève la fction header, il apparait une suite de caractère bizares (le code binaire sans doute).
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
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
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.
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 ?
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 ?
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";
}
?>
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";
}
?>