Bonjour messieurs,
je crois être un des rares à avoir une erreur dans l'affichage de mon image provenant d'un champ BLOB dans ma BD MySQL.
Voici l'erreur que j'obtiens :
Mes bouts de codes.L'image "http://localhost/test/fonction/apercu.php?id=1" ne peut être affichée car elle contient des erreurs.
1 - POUR INJECTER L'IMAGE DANS LA BASE
L'injection se passe sans problème$fichier_blob = file_get_contents($_FILES['foto']['tmp_name']);
$fichier_blob = addslashes($fichier_blob);
$requete = "INSERT INTO `photo_candidat` (`id_compte_emploi`, `photo_nom`, `photo_taille`, `photo_type`, `photo_description`, `photo_data`)
VALUES ('$numCompte', '$fichier_nom', '$fichier_taille', '$fichier_type', 'eVolution', '$fichier_blob')";
$inject = mysql_query($requete);
if($inject) //ETAPE 5
{
$injection['result'] = 'ok';
return $injection;
}
else
{
$injection['mess'] = "Problème avec la base de donnée";
$_SESSION['error'] = "Impossible d'effectuer la requete sur la BDD - Erreur 1105
return $injection;
}
2 - POUR AFFICHER L'IMAGE
A - liste des images dans la base
$req = "SELECT photo_nom, photo_candidatId FROM photo_candidat ORDER BY photo_nom";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
echo "<a href=\"apercu.php?id=".$col[1].
"\">".$col[0]."</a><br />";
}
B - page pour afficher l'image
Et j'obtiens le message décrit au dessus. J'ai cru au début à un problème d'encodage des caractères (UTF-8, unicode et autre) donc j'ai passé ma BDD en ''uni_general_ci, j'ai vidé les fichier BLOB, j'ai ré injecté de nouveau et même résultat.if(isset($_GET['id']))
{
$id = intval($_GET['id']);
$req = "SELECT photo_candidatId, photo_type, photo_data ".
"FROM photo_candidat WHERE photo_candidatId = $id ORDER BY photo_nom";
$ret = mysql_query ($req) or die (mysql_error ());
if ( !mysql_result($ret, 0) )
{
echo "Id d'image inconnu";
}
else
{
header('Content-type: image/jpeg');
header('Content-transfer-encoding: binary');
echo mysql_result($ret, 2);
}
}
else
{
echo "Mauvais id d'image";
}
Merci à toute âme charitable pour des indications ou une soluces....
Partager