Problème : Forcer le téléchargement des fichiers
Bonjour,
Voilà j'ai un problème pour forcer le téléchargement avec un fichier.
Je me sert de votre adresse :
http://www.lephpfacile.com/tips/index.php?p=12
Tout se passe correctement à UNE condition, que je ne mette pas d'espace dans le fichier sinon il me jette.
J'ai bien essayé ceci :
$file = str_replace (' ','-', $file);
OU
$file = str_replace (' ','%20', $file);
OU
$file = str_replace (' ',' ', $file); (attention le deuxième " " est un espace forcé crée avec Alt+160)
Mais rien à faire l'archive zip plante à chaque fois.
Il fait comme s'il le téléchargé mais en fin de compte elle est corrompu...
Pourriez-vous m'aidez s'il vous plait ?
Merci d'avance
le 22/01/2006 à 14:55
i M@N
Hello !
Essaye avec le
code que je t'ai donné hier :
<?php
//download
/*On initialise notre variable (en supposant que le lien pour downloader
est du type download.php?file=fichier.ext*/
if (isset($_GET['file'])) $file = ereg_replace('<[":]>','',$_GET["file"]); else $file = "";
//On définit le répertoire courant comme répertoire
$path = "./";
//On remplace les espaces par des - (sinon ça fonctionne pas avec mozilla)
$file = str_replace (' ','-', $file);
//On vérifie l'extension du fichier
$tableau = explode (".", $file);
$nb_element_1 = count ($tableau) -1;
$extension = $tableau[$nb_element_1];
//Si l'extension correspond à celles que l'on veut autoriser alors on lance le download
if (($extension == "mp3") || ($extension == "jpg")) {
header('Content-disposition: attachment; filename='.$file.'');
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: binary\r\n'); // Surtout ne pas enlever le \n
header('Content-Length: '.filesize($path.$file).'');
header('Pragma: public, no-cache');
header('Cache-Control: no-store, public, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($path.$file);
//On termine notre script
exit();
}
?>
J'avais essayé avec celui fourni dans la rubrique astuce qui est le même que beaucoup d'autres sur le net et il ne fonctionnait qu'avec iE ... après plusieurs tests et recherches sur le net j'ai finalement réussi à le faire fonctionner aussi bien avec iE que Mozilla qui ne supportait pas les espaces dans les fichiers, d'où le - qui remplace les espaces dans ce code.
@+...
One Love, One Heart, One Unity.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: