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 :

Téléchargement de fichier


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 76
    Points
    76
    Par défaut Téléchargement de fichier
    Bonjour, j'ai realise un script en php qui permet le telechargement de fichier, tout est opérationnel, sauf que lorsque la taille du fichier est importante (dans le cas teste 2.2go), IE lance le transfert, cree le fichier de destination mais s'arrete sans transferer aucune donnée.
    Tandis que dans le cas de firefox, tout est opérationnel.
    Si quelqu'un a une idée, je vois vraiment pas.

    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
     
    <?php
        require("require.php");
    /**
     * PHP Template.
     */
    $file = $_GET['file'];
    $taille=filesize("$file");
    header("Content-Type: application/force-download; name=\""._basename($file)."\" ");
    header("Content-Transfer-Encoding: binary");//permet de lire aussi le fichier mais impose d'avoir le type mime
    //header("content-type: application/octet-stream" );//propose seulement le download sous linux
    header("Content-Length: $taille");
    header("Content-Disposition: attachment; filename=\""._basename($file)."\"");
    header("Expires: 0");
    //header("Cache-Control: no-cache, must-revalidate");
    //header("Pragma: no-cache");
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public'); 
    readfile($file);
    exit(); 
    ?>
    Merci d'avance

  2. #2
    Membre régulier Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    J'ai fini par trouver ma solution, il ne s'agit pas d'une erreur,mais plutot d'un bug de la fonction filesize qui renvoi un chiffre negatif des que le fichier est volumineux.

    Je m'etais deja fais avoir lorsque je faisais afficher la taille des fichier, mais j'avais completement zappe, et IE ne doit pas aimer qu'on lui dis que le fichier a une taille negative.
    Donc maintenant ca donne ceci:
    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
     
    <?php
        require("require.php");
    /**
     * PHP Template.
     */
    $file = $_GET['file'];
    $taille= exec ('stat -c %s '. escapeshellarg ($file)); //filesize("$file");
    header("Content-Type: application/force-download; name=\""._basename($file)."\" ");
    header("Content-Transfer-Encoding: binary");//permet de lire aussi le fichier mais impose d'avoir le type mime
    //header("content-type: application/octet-stream" );//propose seulement le download sous linux
    header("Content-Length: $taille");
    header("Content-Disposition: attachment; filename=\""._basename($file)."\"");
    header("Expires: 0");
    //header("Cache-Control: no-cache, must-revalidate");
    //header("Pragma: no-cache");
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public'); 
    @readfile($file);
    exit(); 
    ?>

  3. #3
    Membre régulier Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Cette solution est aussi fonctionnel, et je la trouve plus propre.
    Elle evite ainsi de devoir recourir a une commande shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo sprintf("%u", filesize($file));

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

Discussions similaires

  1. Téléchargement de fichier
    Par casafa dans le forum Web & réseau
    Réponses: 21
    Dernier message: 18/06/2009, 23h34
  2. Réponses: 5
    Dernier message: 08/12/2005, 20h13
  3. Téléchargement de fichiers par HTTP / FTP
    Par Gladiator dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 07/12/2005, 11h28
  4. Réponses: 5
    Dernier message: 05/11/2005, 17h53
  5. [SOAP][XML][C#.NET] Téléchargement de fichiers XML
    Par juniorAl dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/06/2005, 09h35

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