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

Bibliothèques et frameworks PHP Discussion :

uploadprogress_get_info() - uploadprogress.so


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Points : 35
    Points
    35
    Par défaut uploadprogress_get_info() - uploadprogress.so
    Bonjour,
    Voilà j'ai commencé à coder mon uploader avec jquery et php.
    Pour récupérer la progression de l'upload, j'ai décidé d'utiliser l'extension pecl uploadprogress.so .
    Je l'ai installé en root sur debian :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pecl install uploadprogress
    qui me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Failed to download pecl/uploadprogress within preferred state "stable", latest release is version 0.9.2, stability "beta", use "channel://pecl.php.net/uploadprogress-0.9.2" to install
    Alors je relance en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pecl install channel://pecl.php.net/uploadprogress-0.9.2
    L'extension s'est installé, et me demande d'ajouter extension=uploadprogress.so dans php.ini.
    J'execute, redémmare apache2 et vérifie dans le phpinfo qui me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    uploadprogress 0.9.2
    Directive	Local Value	Master Value
    uploadprogress.file.contents_template	/tmp/upload_contents_%s	/tmp/upload_contents_%s
    uploadprogress.file.filename_template	/tmp/upt_%s.txt	/tmp/upt_%s.txt
    uploadprogress.get_contents	0	0
    Jusque la rien de compliqué.
    Je test mon script d'upload, la bar d'upload ne bouge pas, je debug en ouvrant 2 fenetre, l'une avec le formulaire suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form action="" method="POST" id="uploadform" enctype="multipart/form-data" >
     
    <input type="hidden" name="UPLOAD_IDENTIFIER" id="progress_key" value="<?php $uuid ?>" />
    <input type="file" name="ulfile" id="ulfile" />
    <input type="submit" value="Upload" />
     
    </form>
    l'autre avec le php progress.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    error_reporting(E_ALL);
     
    if (@$_GET['id']) {
    	echo json_encode(uploadprogress_get_info($_GET['id']));
    	exit();
    }
     
    $uuid = uniqid();
    Je debug en récupérant $uuid avant l'upload et pendant l'upload d'un fichier sur la deuxieme progress.php?id=001456674(ex)

    J'ai tout éssayé, rien à faire la fonction uploadprogress_get_info me retourne toujours un NULL.
    Alors que l'upload se fait.

    J'ai éssayé avec le module APC et la aucun problèmes! Mais apc retourne moins d'informations que uploadprogress donc je prefererais faire fonctionner uploadprogress.

    NB : J'ai augmenter la taille max d'upload php dans le php.ini, change rien.

    Ma version PHP : PHP Version 5.2.0-8+etch13

    Quelqu'un aurait réussi a la faire fonctionner correctement? Si oui, peut-il m'expliquer sa démarche ou ce qui ne vas pas/qui manque dans la mienne.
    Merci d'avance.

    Austriker

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Points : 35
    Points
    35
    Par défaut
    Je me permet de up. je dois délivrer l'application dans de brefs délais.
    Merci d'avance.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    Bon j'ai reussi a le faire fonctionner, mais je dois dire que je ne vois pas trop ou est le probleme avec ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uploadprogress
    uploadprogress support	enabled
    Version 	0.3.0-beta
    exemple de form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <input name="UPLOAD_IDENTIFIER" id="progress_key" value="63-1626739399" style="border: 0pt none ; display: none;" type="hidden">
    <input name="Video" id="Video" type="file"> 
    <br class="separateur">
     
    <div id="progressbar" style="display: none;">
    </div>

    le code de progress bar :

    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
    <?php
     
     
    $unique_id = $_GET['uniq'];
    $uploadvalues = uploadprogress_get_info($unique_id);
    if (is_array($uploadvalues)){
    ?>
    <div style="width: 800px; margin:auto;">
        <div class="progress" style="width: 100%; height: 56px; border: 1px solid #D9D9D9; background: #white;position:relative; ">
            <div id="progressactive" style="width: <?=round($uploadvalues['bytes_uploaded']/$uploadvalues['bytes_total']*100)?>%; height: 56px;  text-align: center;background: url(/images/V1/upload/load.png) top left repeat-x; overflow: hidden; float:left; margin-left:0;font-family:Myriad, Verdana, Arial;font-size:25px;font-weight:bold;color:white;line-height:56px;"><?=round($uploadvalues['bytes_uploaded']/$uploadvalues['bytes_total']*100)?>%</div>
        </div>
        <p><?=round($uploadvalues['bytes_uploaded']/1024)?>k sur <?=round($uploadvalues['bytes_total']/1024)?>k envoy&eacute;s. Temps restant: <?=convertSeconds($uploadvalues['est_sec'])?>. Vitesse d'upload : <?=round($uploadvalues['speed_average']/1024)?>kbs</p>
    </div>
    <?php }
    ?>
     
     
    <?php
    function convertSeconds($temps)
    {
      //combien d'heures ?
      $hours = floor($temps / 3600);
     
      //combien de minutes ?
      $min = floor(($temps - ($hours * 3600)) / 60);
      if ($min < 10)
        $min = "0".$min;
     
      //combien de secondes
      $sec = $temps - ($hours * 3600) - ($min * 60);
      if ($sec < 10)
        $sec = "0".$sec;
     
      echo $hours."h".$min."m".$sec."s";
    } 
    ?>

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup Zevince pour ta réponse.
    En faite j'ai trouvé le problème, bête, mais vicieux.
    J'ai fait l'erreur d'appeler les extensions pecl en fin de php.ini pour les séparer des extensions "officielle". Apc fonctionnait bien mais en faite uploadprogress ne fonctionnait pas du fait de sa place dans le fichier, j'ai donc déplacé l'appel des extensions pecl juste en dessous de l'appel des mod "officiel".
    Et la grande surprise! ça fonctionnait parfaitement!

    Je te remerci donc d'avoir prit le temps de réfléchir à mon problème.
    Austriker

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 80
    Points
    80
    Par défaut
    Personnellement j'ai eu un problème similaire, je dois avouer que la solution était vraiment conne...
    Don't work:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         <input type="file" name="icone" id="icone" />
         <input type="hidden" id="keyFile" name="UPLOAD_IDENTIFIER" value="<?php echo uniqid(); ?>" />
    Work:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         <input type="hidden" id="keyFile" name="UPLOAD_IDENTIFIER" value="<?php echo uniqid(); ?>" />
         <input type="file" name="icone" id="icone" /><br />
    Avouez quand même que c'est une demie heure perdue débilement .

    Désolé si j'up le sujet mais ça pourra surement servir à d'autres.

    (PS: moi j'ai bien chargé l'extension à la fin du php.ini et aucun soucis)

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

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