Forcer le DL d'un fichier avec espaces ....

arginine Messages postés 10 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 avril 2010 - 1 mars 2006 à 17:54
siwil Messages postés 23 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 2 septembre 2009 - 10 sept. 2009 à 18:46
Bonjour,


Voici le code que j'utilise pour forcer le téléchargement d'un fichier. Tout se passe tres bien SAUF pour
les fichiers dont le nom comporte un expace. Je ne souhaite pas contourner le probleme en renomnant mes fichiers.


Fichier download.php:


<?
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename="".$_GET['file'].""");
readfile($_GET['chemin']);
?>



$_GET['file'] = fichier.ext (ex: toto.jpg)
$_GET['chemin'] = chemin complet (ex: http://www.monsite.com/dossier/



HTML (ex ou le fichier a télécharger est une image):
[download.php?chemin=http://site/dossier/&file=DSCN1030.jpg Telecharger]



J'ai deux questions:


1 - est ce que la symtaxe de mon fichier download.php est correct ?
2 - Et enfin pourquoi ca marcche pas (j'ai bien une fenetre de proposition de tlélchargement,
je peux bien télécharger un fichier mais celui ci fait 2ko et est "illisible") QUAND il y a des eapaces dans le
nom du fichier ???



PS: J'ai cru parvenir a resoudre mon probleme avec ce lien, mais ... non:
http://www.webmaster-hub.com/index.php?showtopic=13169


Par avance, merci a tous



Francis

5 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 mars 2006 à 17:59
Salut,

si tu tentes de remplacer les espaces par %20 ça fonctionne ? dans le cas contraire t'es bon pour les renommer...

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 mars 2006 à 18:23
Bonjour,
pour les chemins c'est toujours un calvaire, parfois il faut utiliser urlencode( ), parfois rawurlencode( ), et encore d'autres fois il faut utiliser les moyens du bord...
J'aimerais bien comprendre une fois pour toutes, d'ailleurs...
tiens-nous au courant de tes essais
à+
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 mars 2006 à 18:24
ha et au fait : un chemin peut marcher sous un navigateur et pas un autre...
0
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
2 mars 2006 à 17:49
La magie de la non-compatibilité et de la non-standardisation xD

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
siwil Messages postés 23 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 2 septembre 2009
10 sept. 2009 à 18:46
Salut les amis!!

j'ai un petit soucis,je n'arrive pas
a download les fichiers ayant un nom avec espace
comme par exemple: "page accueil.doc"
j'ai utilise les fonctions comme:
"urlencode" ou encore "rawurlencode"
mais sans succes
je les utilise comme ca:

upload.php

<?php

$dir='C:\doctechnique';

if(@is_dir($dir)){// On vérifit que le dossier existe

$dh = opendir($dir);// On ouvre le repertoire

while(($file = readdir($dh)) !== false){// Boucle pour parcourir le repertoire

echo 'Fichier :[downloadtechnique.php?section=willy&file=' .urlencode($file) . ' '.$file.']
';
//echo '[download-doc.php?section=willy&file=' . urlencode($file) . ' Fichier : '.$file.']
';

}
closedir($dh);// On ferme le repertoire

unset($nomFich,$dir,$dh);// On supprime les variables qui servent à rien

}else{
?>
<script language="Javascript">
alert ("Le dossier contenant les fiches de forage n'existe pas sur le serveur !!!");
</script>
<?php


download.php

<?php
if (isset($_GET['file'])) {
$file = preg_replace('/[^0-9a-z\.\_\-]/i','',urldecode($_GET['file']));
//if (isset($_GET['file'])) {
//$file = preg_replace('/[^0-9a-z\.\_\-]/i','',urlencode($_GET['file']));

$dir='c:\\docforage\ ';
$fullpath = $dir.$file;

if (is_file($fullpath)) {
header("Content-disposition: attachment; filename=".$file);
header("Content-length: ".filesize($fullpath));
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
readfile($fullpath);
}
else {
//echo $fullpath .' n est pas un fichier';
?>
<script language="Javascript">
alert ("Telechargement Impossible !!!");
</script>
<?php
require("liste_forage.php");
}
}
?>

SVP les gars si kelk1 a un moyen pour contourner ce pb,je ne veux pas renommer mes
fichiers.
Merci pour une quick reponse
0
Rejoignez-nous