Enregistrement d'un fichier dans mysql puis lecture de ce fichier

Résolu
loutwice
Messages postés
37
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
29 janvier 2006
- 26 août 2004 à 01:36
cs_windu
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006
- 27 août 2004 à 21:52
salut,

alors voilà j'enregistre un fichier (n'importe quel type:jpg,pdf...)
dans un blob. ça ça marche bien.

ensuite, j' essaye d'afficher mon fichier mais tout ce que j'obtien c le code binaire!!!

quelqu'un sait comment faire pour l'afficher correctement???

voici le code que j'utilise:

<?
$requete= "select fichier from fichier_joint where numfichier=ident";

$resultat=mysql_query($requete);
$champ=mysql_fecth_array($resultat);

$fichier=$champ[0];
echo $fichier;

?>
voila.
merci

9 réponses

blinkseb
Messages postés
57
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
18 avril 2005

26 août 2004 à 01:59
Le seul moyen d'afficher un fichier et (à ma connaissance) et créer un fichier temporaire, de copier les donner dedans, et de l'afficher ensuite!


$file = fopen("fichier_tmp.tmp", "w+");
fwrite($file, $fichier);
fclose($file);

puis

pour supprimer le fichier

unlink("fichier_tmp.tmp");



Je n'ai pas vérifié ce code, je suis crévé, et il est tard. Cependant l'idée principale y est :)

bLiNkSeB - Anciennement sebastienbro
3
loutwice
Messages postés
37
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
29 janvier 2006

26 août 2004 à 04:09
merci, mais ca ne resoud pas le probleme. ça n' affiche toujours pas correctement le document .
genre:

GIF89a×O÷ÿÿÿþþþðùùþößïùøîøøñð÷ðïöàòòþî¿ïîõßòòÞòñþîŸþç?ÐìëÏìëÎëêþãâàîáßíàÞìÿß?þßÀæåàÛÞ¿åä¯ßÝ°ßÞÿÓPÓÐåÒÏäÑÎãÓÍÙÿÏ@ Ù×?Ø×ÒÈÉÿÇ ÒЏÒÐÿÃÄÀÜÿÛâÀoßÚÄœÑÿ¿áŒa?ÌÊËÉñŽÓ²pð³µ°ÓoÅÃŽ¯Òµ¯ÒpÅÃŽ®ÑoÄÂâ°)Ž¬
3
blinkseb
Messages postés
57
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
18 avril 2005

26 août 2004 à 12:27
Ton code doit donner ça :


<?
$requete= "select fichier from fichier_joint where numfichier=ident";

$resultat=mysql_query($requete);
$champ=mysql_fecth_array($resultat);

$fichier=$champ[0];

$file = fopen("fichier_tmp.tmp", "w+");
fwrite($file, $fichier);
fclose($file);

?>



et plus tard, n'oublie pas de supprimer le fichier :


unlink("fichier_tmp.tmp");



bLiNkSeB - Anciennement sebastienbro
3
korrox
Messages postés
60
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
3 septembre 2004

26 août 2004 à 15:35
Par curiosité sa va te servir a quoi d'enregistré la contenance d'un fichier dans une base de donnée?

Une bonne programmation c'est avant tout une bonne analyse. :)
3

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

Posez votre question
loutwice
Messages postés
37
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
29 janvier 2006

26 août 2004 à 22:36
j'ai dejà essayer d'enregistrer mon fichier dans un fichier temp. mais ca n'abouti à rien....

pour repondre à korrox: je suis d'accord avec toi.
il est claire qu'il est plus simple et plus pratique d'enregistrer les fichiers dans un dossier mais dans le cas présent, c'est la société pour laquelle je développe ce site qui me demande d'enregistrer directement dans la base.
3
loutwice
Messages postés
37
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
29 janvier 2006

26 août 2004 à 23:37
pour blinkseb:
ton code marche bien seulement pour afficher les images.
moi je dois afficher également des .docs, ou des .pdf
3
blinkseb
Messages postés
57
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
18 avril 2005

26 août 2004 à 23:40
Afficher des .doc et des .pdf ? En html, c'est impossible, le seul moyen, c'est de les faire télécharger ! Il faut modifier les entête HTML mais je sais pas trop comment !

bLiNkSeB - Anciennement sebastienbro
3
loutwice
Messages postés
37
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
29 janvier 2006

27 août 2004 à 00:49
eureka!!!!
j'ai trouvé,
j'ai simplement rajouté à la fin de mon code:
$pipe = popen("fichier_tmp.tmp", "r");

donc en tou ca donne ca:
$requete="select fichier from fichier_joint where numfichier=$id";
$resultat=mysql_query($requete);
$tableau=mysql_fetch_array($resultat);

$image=$tableau["0"];

$file = fopen("fichier_tmp.tmp", "w+");
fwrite($file, $image);
fclose($file);

$pipe = popen("fichier_tmp.tmp", "r");

le seul probleme c que ça l'ouvre dans une autre fenetre.
mais bon ça marche et c deja ca!!
si toutefois vous avez d'autres solutions.... je suis preneur
3
cs_windu
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

27 août 2004 à 21:52
une fois ton fichier récupéré depuis ta BDD, tu le copie dans un répertoire précis ( de facon temporaire en fait, sinon ca sert à rien de le mettre ds 1 BDD...) et tu affiche le lien vers ce ficher! en cliquant dessus, l'utilisateur va le télécharger!
à toi ensuite de détruire le fichier si l'utilisateur quitte la page ou s'il se déconnecte...
0