[PHP] téléchargement forcé dans autre dossier

Résolu/Fermé
julian51 - 20 mars 2008 à 15:13
skander123 Messages postés 8 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 7 avril 2008 - 7 avril 2008 à 20:16
Bonjour,

dans une page php j'affiche le contenu d'un répertoire qui contient d'autre répertoires et fichiers, je dois permettre le téléchargement direct des fichiers en question plutot que l'affichage dans l navigateur pour certains type de fichiers.

Je procède dans le premier fichier de la manière suivante :

<a href="redirection.php?file='.$url_fichier.'">'.$f.'</a>


code dans le fichier redirection.php :

define('CFG_SYSTEM_FILENAME', ''.$_GET['file'].''); // Nom du fichier pour le système
define('CFG_SEND_FILENAME', CFG_SYSTEM_FILENAME); // Nom du ficher pour le navigateur

//
// Constantes à ne pas modifier
//
define('CFG_FILESIZE', filesize(CFG_SYSTEM_FILENAME));
define('CFG_FILE_MD5', md5_file(CFG_SYSTEM_FILENAME));
define('CFG_DATE_FORMAT', 'D, d M Y H:i:s');

//
// Quelques éléments nécessaires
//
error_reporting(0);
ini_set('zlib.output_compression', 0);


/*
* Les en têtes nécessaires
*/

//
// Gestion du cache
//
header('Pragma: public');
header('Last-Modified: '.gmdate(CFG_DATE_FORMAT).' GMT');
header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');

//
// Informations sur le contenu à envoyer
//
header('Content-Tranfer-Encoding: none');
header('Content-Length: '.CFG_FILESIZE);
header('Content-MD5: '.base64_encode(CFG_FILE_MD5));
header('Content-Type: application/octetstream; name="'.CFG_SEND_FILENAME.'"');
header('Content-Disposition: attachement; filename="'.CFG_SEND_FILENAME.'"');

//
// Informations sur la réponse HTTP elle-même
//
header('Date: '.gmdate(CFG_DATE_FORMAT, time()).' GMT');
header('Expires: '.gmdate(CFG_DATE_FORMAT, time()+1).' GMT');
header('Last-Modified: '.gmdate(CFG_DATE_FORMAT, time()).' GMT');


/*
* Envoi du fichier
*/

readfile(CFG_SYSTEM_FILENAME);


Le problème es que ainsi j'ai bien une fenètre de éléchargement mais j'ai le lien vers le fichier avec des "-" au lieu des "/" ce qui est dnc un fihier qui n'existe pas.

Comment arriver a récupérer précisément le fichier voulu dans chaque lien sachant que ces fichiers ne sont pas dans le même dossier que redirection.php?

merci d'avance
A voir également:

2 réponses

finalement j'ai réussi grâce à la fonction basename() que je ne connaissais pas, elle sépare le nom du fichier du nom du dossier, ce qui règle mon problème.
0
skander123 Messages postés 8 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 7 avril 2008 1
7 avril 2008 à 20:16
bsr,je n'arrive à telecharger aucun logiciel,le panneau d'enregister le fichier et transparent donk je peut pas cliké dessu!!ki peu maider?merci
0