Image dans un champ BLOB sous MySQL ??? - PHP - Programmation
Marsh Posté le 02-06-2010 à 17:10:01
as-tu un texte envoyé au navigateur avant tes headers ? genre un espace ou un retour chariot avant <?php ou après ?> ...
Marsh Posté le 02-06-2010 à 19:41:56
attention à la ligne en rouge :
Code :
|
Marsh Posté le 03-06-2010 à 10:01:09
stef_dobermann a écrit : attention à la ligne en rouge :
|
Bonjour,
Merci pour votre réponse; j'ai réussi à insérer dans la BD mais pour afficher je suis oblige de passer par un "href"
<a href='afficherImage.php?id=$donneesVisu[id_data]' target='wclose' onclick=window.open('afficherImage.php?id=$donneesVisu[id_data]','_blank','width=400,height=300,,left=20,top=30')>$donneesVisu[nom_image]</a>
qui me dirige ver sune page afficherImage.php qui contient :
Header("Content-type: image/png" );
// connection a la base de donnees
$db = mysql_connect("localhost", "utilisateur", "mot_de_passe" ) or die(mysql_error());
mysql_select_db("NOM_BASE" ) or die(mysql_error());
$id = $_GET['id'];
$req = mysql_query("SELECT * FROM data WHERE id_data=$id" ) or die(mysql_error());
while($rep = mysql_fetch_array($req))
{
$image = $rep['data'];
$data = base64_decode($image);
$im = imagecreatefromstring($data);
if ($im !== false) {
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
}
et quand je mis ce code (code d'affichage) dans un autre fichier php ça marche pas : c'est un pb de header ???
Marsh Posté le 03-06-2010 à 10:48:54
Je ne sais pas d'où sort ce imagepng & co mais bon... voilà du code pour streamer correctement une ressource :
Code :
|
Il faut bien sur aucun autre echo/print avant l'appel à cette fonction, et que $content soit le contenu binaire du fichier.
D'ailleurs tu peux ne pas faire de base64encode/decode, les BLOB ça supportent sans soucis les données binaires.
Marsh Posté le 03-06-2010 à 10:50:12
donc tu as raison, c'est bien un problème header, il doit y avoir un caractère ou un commentaire qui est envoyé avant ce qui pose problème.
Marsh Posté le 03-06-2010 à 13:01:50
Merci bcp
comme ça je reste avec une fichier spécifique pour l'affichage de l'image
merci pour la fonction, je vous dis la réponse quand je la teste
A+
Marsh Posté le 02-06-2010 à 13:41:08
Bonjour,
Je veux insérer une image .png dans ma base de données dans un champ de type BLOB. d'abord je fais $fichier = file_get_contents("chemin image" ); puis $image = base64_encode($fichier); et j'insère dans la BD le $image et quand je lance ce code :
$req = mysql_query("SELECT * FROM testimage WHERE id=1" ) or die(mysql_error());
$rep = mysql_fetch_array($req);
$image = $rep['image'];
$image;
$data = base64_decode($image);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
il m'affiche le message d'erreur suivante : l'image ne peut pas être afficher car elle contient des erreurs.
par contre quand je lance ce code ça marche parfaitement (sans insertion dans la base de données) . dans $data j'ai mis directement le
$data = base64_encode($fichier);
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
je ne vois pas où est le problème . Merci pour votre aide