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 :

Gestion pour le téléchargement


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Gestion pour le téléchargement
    Bonjour à tous j'ai quelque soucis avec la gestion de video de plus d 100Mo .
    j'ai crée une adresse public pour tester les scripts


    1*) J'ai touvé sur le net un script avec buffer qui semblait marché, mais apres quelques tests je me suis rendu compte que le fichier ne se téléchargait jamais completement ( Pour une Vid de 180Mo ca dl jusqu'a 120 ou 160 .. :o , sur la fenetre de téléchargement le % n'est pas affiché et la taille du fichier est inconnue (voir Image) Et si la connexion est occupé par un autre Log le fichier se Dl à 90Mo !, pas du tout stable)


    - le 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
    <?php
    $dir ="/home/adrien/www/musicdemo/";
    $fichier ="VidFamille.mpeg";
     
    header("Content-Type:video/mpeg");
    header("Content-Disposition:attachment; filename=$fichier");
     
    $stream = fopen($fichier, "r");
    while (!feof($stream)) {
    $buffer = fread($stream, 65536);
    echo $buffer;
    }
    fclose($stream);
    ?>

    2*) Une seconde recherche m'a donnée un scipt qui indique le % du téléchargement en cours et la taille du fichier est connu , mais si le fichier fait plus de 100Mo il devient moins stable,
    la fenetre "ENREGISTRER sous .." met 20/30 sec pour apparaitre et des fois pas du tout ! )



    Script Version 2
    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
    <?php
    $dir ="/home/adrien/www/musicdemo/";
    $file ="VidFamille.mpeg";
     
     
    //telechargement 
    $taille=filesize("$dir/$file"); 
    header("Content-Type: application/force-download; name=\"$file\""); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: $taille"); 
    header("Content-Disposition: attachment; filename=\"$file\""); 
    header("Cache-Control: no-cache, must-revalidate"); 
    readfile("$dir/$file"); 
    exit(); 
     
    ?>
    Voilou!
    Merci d'avance ..

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Tu pourrais spécifier la taille du fichier dans le premier script également :
    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
     
    <?php
    $dir ="/home/adrien/www/musicdemo/";
    $fichier ="VidFamille.mpeg";
    $taille=filesize("$dir/$file"); 
     
    header("Content-Type:video/mpeg");
    header("Content-Disposition:attachment; filename=$fichier");
    header("Content-Length: $taille");
     
    $stream = fopen($fichier, "r");
    while (!feof($stream)) {
    $buffer = fread($stream, 65536);
    echo $buffer;
    }
    fclose($stream);
    ?>
    Personnelement j'envoie en téléchargement des fichiers de 500 mo avec la seconde méthode (readifile) et c'est quasi-immédiat.

    Ca pourrait être des problèmes de latence avec ton serveur mais bon... à priori si tu es hébergé chez un professionel ca ne devrait pas être le cas.

    Aurais-tu une page où on pourrait tester ton téléchargement ?

    Bonne soirée.

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse, mais ca ne fonctionne pas

    Peut-tu me montrer ton script de la méthode (readifile).
    Merci.

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    C'est le même que le tien :
    • Content-Disposition: attachment
    • readfile($file)


    Ca devrait marcher. Par contre dans readfile tu n'écris pas la bonne url, tu écris "/home/adrien/www/musicdemo//VidFamille.mpeg" du fait que tu rajoutes un "/" :


    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
     
    <?php
    $dir ="/home/adrien/www/musicdemo/";
    $file ="VidFamille.mpeg";
    $file_path = $dir.$file; 
     
    //telechargement 
    $taille=filesize($file_path); 
    header('Content-Type: application/force-download; name="'.$file_path.'"'); 
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Length: '.$taille); 
    header('Content-Disposition: attachment; filename="'.$file_path.'"'); 
    header("Cache-Control: no-cache, must-revalidate"); 
    readfile($file_path); 
    exit(); 
     
    ?>

  5. #5
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Petite question concernant ce script.

    Peux t'on masquer le nom réél du fichier.
    Peux t'on faire télécharger un fichier qui n'est pas dans dossier accessible par le web ?

    exemple
    /MySite/www/ = racine du site web
    /MySite/Files/ = emplacement de stockage des fichiers

    Est ce que c'est gérable comme ca ?

Discussions similaires

  1. Frais de gestion pour une Société de portage ?
    Par orafrance dans le forum Portage Salarial
    Réponses: 24
    Dernier message: 17/02/2024, 10h28
  2. Demande d'infos - Création d'un soft de gestion pour PC et Mac
    Par TTMan dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 22/08/2006, 09h37
  3. Logiciel de gestion pour entreprise
    Par totoalareunion dans le forum Windows
    Réponses: 9
    Dernier message: 17/06/2006, 12h01
  4. Cherche à faire un programme de gestion pour PC et MAC
    Par morgantip dans le forum Windows
    Réponses: 12
    Dernier message: 23/05/2006, 10h01
  5. [C#] Utilisation d'une ProgressBar pour un téléchargement
    Par snoof dans le forum Windows Forms
    Réponses: 10
    Dernier message: 04/10/2004, 20h37

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