IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Forcer le téléchargement d'un fichier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut Forcer le téléchargement d'un fichier
    Bonjour a tous!
    J'ai sur mon site Web une liste de fichiers (mp3 et mp4) que l'utilisateur peut consulter...j'aimerais aussi qu'il puisse télécharger ces fichiers et étant donner que le href=etc... fait ouvrir le fichier dans le navigateur et que moi je souhaite l'apparation de la fenetre ouvrir - enregistrer sous..., j'ai mis en place un script pris sur les FAQ de developpez.com (http://php.developpez.com/faq/?page=..._forcedownload) mais hélas il ne marche pas voici mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    $Fichier_a_telecharger = $_REQUEST['file'];
    $chemin = $_REQUEST['path'];
    $fichier = $chemin.$Fichier_a_telecharger;
     
    define('CFG_SYSTEM_FILENAME', $fichier); // 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);
    lorsque je clique sur le bouton télécharger, mon écran m'affiche :
    Warning filesize stat faile for http://monserveur/monfichier (error2 no such file or directory)
    Puis toute une page de caractère "bizarre" ...pourtant le fichier existe bien (j'ai vérifier) et j'ai recopier exactement ce qui est indiqué dans la FAQ!!!

    Si quelqu'un a une petite idée de mon problème, ça me dépannerait vraiment bien!!

    Merci à vous!!!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    ça y'est résolu, le fichier étant distant il faut remplacer le filesize par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $buffer = '';
    if($fd = fopen ($chemin . $Fichier_a_telecharger, "r")) {
        while (!feof($fd)) {
            $buffer .= fgets($fd, 4096);
        }
        fclose ($fd);
    }
    $size = strlen($buffer);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2007, 15h27
  2. Réponses: 2
    Dernier message: 30/05/2006, 15h07
  3. Comment forcer le téléchargement d'un fichier avec IE.
    Par karibouxe dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/05/2006, 11h51
  4. forcer le téléchargement - problème ouverture fichier
    Par grinder59 dans le forum Langage
    Réponses: 8
    Dernier message: 09/03/2006, 15h59
  5. [Configuration] problème pour forcer le téléchargement d'un fichier
    Par All Bran dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 02/01/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo