Téléchargement par header

Résolu/Fermé
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - 25 janv. 2017 à 15:42
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - 25 janv. 2017 à 17:15
Bonjour,

Je cherche à télécharger un fichier par header (un zip).

J'arrive à télécharger mon zip, mais le problème est que lorsque je l'ouvre, un message d'erreur m'indique que "Le fichier ne peut être ouvert comme une archive". Pourtant, lorsque je l'ouvre via FileZilla, il n'y a aucun problème, je peux consulter normalement mon fichier.

Mon code :

header('Content-Disposition: attachment; filename="fichier.zip"');
header("Content-Type: application/zip");
header("Content-Length: " . filesize('fichier.zip'));
header("Connection: close");


Merci pour votre aide,

hcp7kuz
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
25 janv. 2017 à 15:59
Salut,

Ton code PHP n'envoie aucune données, il faut utiliser la fonction readfile pour envoyer le fichier à la suite des header.
https://www.php.net/manual/fr/function.readfile.php
(voir l'exemple de la doc)

Bonne journée,
0
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23
Modifié par hcp7kuz le 25/01/2017 à 16:10
Merci de ta réponse, mais le problème persiste, toujours la même erreur avec ce code :

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="fichier.zip"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize("fichier.zip"));
readfile("fichier.zip");
header("Connection: close");
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
25 janv. 2017 à 16:56
Le header("Connection: close"); après readfile me semble inutile.
Le type Mime application/zip semblait également mieux correspondre que application/octet-stream

Le fichier zip est-il dans le même dossier que le fichier php ? Si non, il faut renseigner le chemin vers le fichier zip dans la fonction readfile.
0
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23
25 janv. 2017 à 17:15
J'ai enlevé le header("Connection: close"); et remplacer le type octet-stream par zip, et ça marche !

Merci pour ton aide.
0