Forcer le téléchargement et espace dans le nom du fichier

arginine
Invité n'ayant pas de compte PHPfrance

12 déc. 2005, 19:24

Bonjour,
J'utilise le bout de code suivant pour "forcer le télécharmenet d'un fichier":

Fichier dowload.php
<?php
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$_GET['file']);
readfile($_GET['chemin'].$_GET['file']);
?>
Et voici la syntaxe des liens pour forcer le téléchargement:

Code : Tout sélectionner

<a href="download.php?chemin=http://monsite.com/dossier/&file=monfichier.avi">DOWNLOAD</a>
ps: le fichier monfichier.avi est situé dans http://monsite.com/dossier

Tout cela marche très très bien sauf si le nom du fichier a télécharger comporte des espaces (ex: monfichier toto.avi). Si je click sur le lien (pour télécharger un fichier avec un espace), j'ai bien une fenêtre de téléchargement qui s'ouvre mais le poids du fichier téléchargé c'est genre 202 octets ... et si je tente d'ouvrir le fichier (avec expace) téléchargé : erreur (si c'est une video: wmp ---> impossible d'ouvrir le fichier).

J'ai bien essayé de remplacer les espaces (avec ereg_replace) par "%20" mais cela ne marche pas non plus...

si quelqu'un a une idée pour résoudre mon probleme (j'ai pas envie de faire un rename des fichiers avec espaces dans le nom).

Par avance merci,

Francis

Eléphant du PHP | 383 Messages

12 déc. 2005, 20:17

essaie avec la fonction url_encode.

Invité
Invité n'ayant pas de compte PHPfrance

13 déc. 2005, 20:53

merci pour ta réponse mais le problème reste le meme ...

Eléphant du PHP | 383 Messages

13 déc. 2005, 21:10

normalement ca devrait marcher, ou alors il faut aussi que le nom du fichier soit code comme ca ? bizzare. e plus simple est quand meme d'eviter d'avoir des noms de fichiers avec des espaces, ca ne peut que te creer des soucis. pas moyen de les remplacer par des underscores ?