header et fichier zip

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2009, 13:55

Bonjour à tous,

J'essaye d'envoyer un fichier zip au navigateur. Le fichier est bien envoyé mais quand j'essaye de l'ouvrir, le navigateur me dit que l'archive est corrompue (pourtant, elle ne l'est pas).

Voici mon code:
		
                                $filename = "http://www.mondomaine.com/musique/monFichier.zip";
		header('Content-Type: application/octet-stream');		
		header('Content-Disposition: attachment; filename="' . $filename . '"');	
		header('Content-Transfer-Encoding: binary');
		readfile($filename);
de plus, le fichier corrompu envoyé s'appelle "http://www.mondomaine.com/musique/monFichier.zip", au lieu de monFichier.zip.

Voyez vous comment résoudre ces problèmes?
Merci pour vos réponses.

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2009, 14:04

j'ai aussi tenté ceci:
                                $filename = "http://www.mondomaine.com/musique/monFichier.zip"; 
		$size = filesize($filename);
		header("Content-Type: application/force-download; name=\"monFichier.zip\""); 
		header("Content-Transfer-Encoding: binary"); 
		header("Content-Length: $size"); 
		header("Content-Disposition: attachment; filename=\"monFichier.zip\"");		
		header("Expires: 0");
		header("Cache-Control: no-cache, must-revalidate");
		header("Pragma: no-cache");
		readfile($filename);
		exit(); 
ça me donne un nom de fichier correct, mais l'archive envoyée est toujours considérée comme corrompue

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2009, 14:40

ceci me renvoie aussi le fichier mais meme erreur d'archive corrompue:
		header("Content-type: application/octet-stream");
		header("Content-disposition: attachment; filename=monfichier.zip");		

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 juin 2009, 14:49

Je ne sais pas si cela va résoudre ton problème, mais pour ma part j'utilise ce code, sans avoir eu de soucis jusque là :
$file = "http://www.mondomaine.com/musique/monFichier.zip";
$filename = basename($file);

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Accept-Ranges: bytes');
header('Content-Length: '.filesize($file) );

readfile($file);
C'est un fichier zip qui existe sur le serveur ou bien c'est un zip que tu crées à la volée avec php ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2009, 15:10

merci pou ta réponse.
j'ai testé, même probleme... je reçois un fichier zip de 0 octets, avec "archive corrompue ou de format inconnu" si j'essaye d'ouvrir

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2009, 15:50

je viens de tester avec un fichier mp3, meme pb: il devient illisible apres telechargement, sous ie comme ff..

Invité
Invité n'ayant pas de compte PHPfrance

24 oct. 2012, 13:27

Il faut ajouter la ligne

Code : Tout sélectionner

ob_clean();
avant d'utiliser readfile

Eléphanteau du PHP | 12 Messages

24 oct. 2012, 18:21

J'aimerais bien aider mais je crois qu'en fin de compte c'est plutôt qui aurais besoin d'aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 oct. 2012, 20:58

Après 3 ans, j'espère qu'il a soit trouvé une solution à son problème, soit abandonné depuis longtemps...

Merci de laisser les topics morts reposer en paix :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...