ça me convient sauf que ça marche pas.....
je m'explique,
j'ai utilisé 2 types de méthodes :
la première avec des fwrite()
la seconde avec un base64_encode() et base64_decode().
avec fwrite si je le mets dans un fichier "affiche.php", il m'ouvre le
téléchargement de fichier, et ouvre le logiciel par défaut.
avec le système base64 rien ne se passe.
voilà les codes
pour le fwrite :
1- l'encodage :
if (isset ($_FILES['photo'])){//verif l'existence du fichier
$nom=$_FILES['photo']['name'];
$fichier=$_FILES['photo']['tmp_name'];
$taille=$_FILES['photo']['size'];
$type=$_FILES['photo']['type'];
//encodage du fichier
$contenu=addslashes(fread(fopen($fichier,"r"),$taille));
//insertion dans la bd
mysql_query("INSERT INTO photo
photo_binaire,photo_nom,photo_taille,photo_type) VALUES
('$contenu','$nom','$taille','$type')");
}
conclusion : ok ça a bien été enregistrer dans la base.
2 - affichage :
//dans la zone où je veux afficher
//avant j'ai ouvert ma base
$resultat=mysql_query("SELECT * FROM photo ORDER photo_id DESC LIMIT 0, 1");
$ligne=mysql_fetch_array($resultat);
echo "l'image : <img src='affiche.php?mon_id=".$ligne["photo_id"]."' />";
3 - dans le fichier affiche.php :
//le même select puis
$image=$ligne['photo_binaire'];
$file = fopen("fichier_tmp.tmp", "w+");
fwrite($file, $image);
$pipe = popen("fichier_tmp.tmp", "r");
fclose($file);
conclusion : l'appel a cette page ouvre une fenêtre de téléchargement
pour afficher l'image. Donc l'image existe, mais je n'arrive pas à
l'intégrer dans ma page
solution 2 avec un encodage en base 64 :
1- enregistrement à l'identique de la version fwrite, seul changement :
$contenu=base64_encode(fread(fopen($fichier,"r"),$taille));
// qui remplace le $contenu avec les addslashes
2- affichage dans la page (idem):
echo "l'image : <img src='affiche.php?mon_id=".$ligne["photo_id"]."' />";
3- le code de la page affiche.php :
header("Content-type: ".$ligne['photo_type']);
header("Content-length: ".$ligne['photo_taille']);
header("Content-Disposition: attachment;
filename=".$ligne['photo_nom']);
//header("Content-Description: PHP Generated Data");
$echo base64_decode($ligne["photo_binaire"]);
conclusion : l'image ne s'affiche pas, et je ne suis pas sûre qu'elle existe.
Bref, qu'est ce que je n'ai pas fait correctement?
merci-d'avance,