Téléchargement pièce jointe

Résolu/Fermé
Coutcout86 Messages postés 195 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 26 mai 2016 - 1 avril 2015 à 11:06
Coutcout86 Messages postés 195 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 26 mai 2016 - 2 avril 2015 à 11:01
Bonjour,

J'ai un petit souci concernant la notion de téléchargement de pièce jointe. Pour commencer, j'ai un formulaire PHP où dedans je peux attacher un fichier (uniquement de type DOC, DOCX, PDF ou ODT). Si l'utilisateur attache un fichier, celui-ci est mis à un emplacement spécial sur le serveur.

Or, après avoir attaché ce fichier au formulaire PHP, je peux, par l'intermédiaire d'une autre fonctionnalité, télécharger cette pièce jointe. Mais j'ai un petit souci avec le contenu d'un HEADER donc voici ce que j'ai réalisé :


if (file_exists($cheminFichier)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($cheminFichier));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($cheminFichier));
readfile($cheminFichier);
}


Je pense que le problème vient de ça :
 header('Content-Type: application/octet-stream');
.

Dans certains exemples trouvés j'ai pu constater que lorsqu'on souhaite télécharger un fichier PDF par exemple nous mettions ça :
 header('Content-Type: application/pdf');
.

Ayant plusieurs type d'extensions, je voulais savoir si on pouvait manipuler le Content-Type en lui ajoutant plusieurs 'extensions' ?

Quelqu'un pourrait-il m'aiguiller pour que je puisse résoudre cette problématique?

Merci d'avance.
A voir également:

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
1 avril 2015 à 18:29
'lut, bien sûr qu'on peut (et même doit pour que ça marches comme tu le souhaites) manipuler
Content-Type
: il suffit de fournir le type MIME approprié.
mime_content_type étant pratique, elle est obsolète donc il vaut mieux l'éviter.
L'extension
finfo
fournit la même fonctionnalité.
Il faut s'en servir comme ceci:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$typeMIME = finfo_file($finfo, $cheminFichier);
finfo_close($finfo);
header('Content-Type: ' . $typeMIME);
C'est pas dur, hein ;)
0
Coutcout86 Messages postés 195 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 26 mai 2016
2 avril 2015 à 11:01
Merci beaucoup ! ;)
Aprés plusieurs recherches j'ai trouvé la même solution que tu viens de me proposer :)
0