Telechargement de fichier

Le
Gosain
Bonjour,
Je suis un débutant en php et je cherche quelques explications.Le bout de
code suivant permets de télécharger un fichier avec une boite de dialogue
correctement renseignée sous XP/IE6. C.à.d que le nom de fichier est correct
et le type jpg indiqué.

//On envoie un en-tête forçant le transfert (download)

$fichier = "PHOTOS/" . $_GET['id'] . ".jpg";
$file = basename($fichier);

header ("Cache-Control: private");
header ("Content-type: application/force-download");
header ("Content-Disposition: attachment; filename=".$file);

// Après l'en-tête on transmet le contenu du fichier lui-même
readfile ($fichier);

Par contre en remplacant la ligne:
header ("Content-Disposition: attachment; filename=".$file);
par
header ("Content-Disposition: attachment; filename=$file");
le résultat n'est plus correct et le nom de fichier affiché est une partie
de l'Url.

Quelqu'un a-t-il une explication?

J'ai aussi des interrogations concernant l'utilisation de %2e et/ou %20 dans
des Ur l??? Ou puis-je trouver de la doc?

Merci
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
loufoque
Le #570196
Message d'origine de Gosain :
Le bout de
code suivant permets de télécharger un fichier avec une boite de dialogue
correctement renseignée sous XP/IE6.
Les autres navigateurs tu t'en fous ? Enfin c'est pas plus mal si ça

marche pas, ils pourront choisir ce qu'ils veulent faire du fichier

header ("Content-type: application/force-download");
C'est mal.

Enfin c'est pas le sujet.

Par contre en remplacant la ligne:
header ("Content-Disposition: attachment; filename=".$file);
par
header ("Content-Disposition: attachment; filename=$file");
Quelqu'un a-t-il une explication?
Non, c'est la même chose. La différence doit venir de la nature des tests.


J'ai aussi des interrogations concernant l'utilisation de %2e et/ou %20 dans
des Ur l??? Ou puis-je trouver de la doc?
http://www.php.net/urlencode


Gosain
Le #569991
Bon, un peu sec ta réponse.
Je ne me fous pas des autres naviguateurs. Je faisais un test avec le mien.
Et si comme tu le dis c'est la même chose, il semble que pour IE6 ce ne soit
pas le cas. Raison pour laquelle je demandais si quelqu'un avait une
explication.
Quand tu dis c'est mal, peux-tu expliquer pourquoi. Moi j'ai trouvé celà
dans un bouquin sur PHP/MySQL. Est-ce à dire que l'auteur est un vilain qui
donne de très mauvais exemple?
En passant, vu le nombre de messages dans les forums qui tous proposent une
solution miracle pour le téléchargement de fichier sans que le fichier soit
ouvert j'ai la très nette impression que le sujet n'est pas aussi simpliste
qu'il y parait.
Merci pour le lien.
"loufoque" de news:c4p2q5$hq$
Message d'origine de Gosain :
Le bout de
code suivant permets de télécharger un fichier avec une boite de
dialogue


correctement renseignée sous XP/IE6.
Les autres navigateurs tu t'en fous ? Enfin c'est pas plus mal si ça

marche pas, ils pourront choisir ce qu'ils veulent faire du fichier

header ("Content-type: application/force-download");
C'est mal.

Enfin c'est pas le sujet.

Par contre en remplacant la ligne:
header ("Content-Disposition: attachment; filename=".$file);
par
header ("Content-Disposition: attachment; filename=$file");
Quelqu'un a-t-il une explication?
Non, c'est la même chose. La différence doit venir de la nature des tests.


J'ai aussi des interrogations concernant l'utilisation de %2e et/ou %20
dans


des Ur l??? Ou puis-je trouver de la doc?
http://www.php.net/urlencode




Thibaut
Le #569988
Gosain wrote:

[...]
Quand tu dis c'est mal, peux-tu expliquer pourquoi.
Pour moi, c'est pas header ("Content-type: application/force-download");

qui doit « forcer le download » c'est le parametre disposition. C'est
tres mal de changer un Content-type, on sait jamais par qui il peut-etre
analyse (et eventuellement bloque) en chemin vers le browser du client.

[...] Est-ce à dire que l'auteur est un vilain qui
donne de très mauvais exemple?
Mefie toi de ce que disent les medias ... :)


En passant, vu le nombre de messages dans les forums qui tous proposent une
solution miracle pour le téléchargement de fichier sans que le fichier soit
ouvert j'ai la très nette impression que le sujet n'est pas aussi simpliste
qu'il y parait.
euhh ... pardon cher Maitre, mais pourquoi ne pas faire reference

directement au protocole que tu utilises et aux entetes qu'il supporte ?

En lisant rfc2616 on s'aperçoit que le sujet est discuté également dans
rfc1806. je cite « An example is Content-Disposition: attachment;
filename="fname.ext" » ... et je me dis que je ne trouve pas les quotes
dans ce que tu envoies.

C'est p'tete qu'une piste, mais chez moua ca fonctionne et je teste
naturellement mon code sur 5 clients (OP,MZ,NS4,IE,NS7) et 3 OS
différents (RedHat, WindowsXP, MacOs X) ;)

D'une maniere generale, n'oublie pas que tu dois sortir un truc qui
respecte avant tout les normes admises par tes pairs plutot que celles
définies par un business man qui a un service marketing plus important
que ses équipes de developpement ... D'ailleur, es-tu sur que l'auteur
auquel tu fais reference n'est pas repute pour etre infeode a ce vil
editeur ?

Hope it helps
Thibaut

Publicité
Poster une réponse
Anonyme