Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/09/2011, 14h52   #1
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 4
Points : 4
Par défaut Téléchargement fichier via header()

Bonjour,

Je veux faire un script php de téléchargement de fichier pour la plupart en jpg via la fonction header().

Le téléchargement s'opère bien mais le fichier téléchargé est corrompu. En ouvrant le fichier jpeg dans un éditeur de texte, j'ai remarqué qu'il commence par 4 lignes vides et ensuite les données. En effaçant les lignes vides et en enregistrant, l'image devient lisible.

Voici le bout de code pour le téléchargement:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
 
                        $fileToDownload = $_GET['file'];
 
                        $url = 'chemin/vers/fichier/' . $fileToDownload; //Pour l'exemple (le chemin est ok)
 
			header("Content-disposition: attachment; filename=$fileToDownload");
			header('Content-Type: application/force-download');
			header('Content-Transfer-Encoding: binary');
			header("Content-Length: " . filesize($url));
			readfile($url);
			exit;
 
?>
J'ai essayé différentes méthodes avec les headers mais j'ai toujours ces 4 lignes vides au début du fichier jpg. Est-ce quelqu'un aurait une idée?
-The_Reaper- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 16h26   #2
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149


Es-tu certain qu'aucune ligne vide n'est affichée par ton code avant d'arriver à ce niveau ? Par exemple avant le <?php en début de fichiers, ou après le ?> (qu'il est recommandé d'enlever d'ailleurs) en fin de fichiers ?

Petit conseil par rapport au download de fichier : utilise un while de fread, ça utilisera moins de mémoire en cas de téléchargement de fichiers lourds
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 16h54   #3
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 4
Points : 4
Effectivement, j'avais des espaces après les balises ?> en fin de fichier. En les enlevant, ça fonctionne.

Merci beaucoup^^
-The_Reaper- est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h26.


 
 
 
 
Partenaires

Hébergement Web