2009-07-28 7 views
0

Je souhaite afficher une barre de progression dynamique dans mon application lors du téléchargement d'une vidéo (format * .flv). J'ai cherché sur le Web pendant plus de 2 heures mais je ne trouve aucun tutoriel pour me guider dans ce processus.Zend_Progressbar + JQuery + chargement d'une vidéo

Ce que j'ai jusqu'à présent:

    scénario
  • qui télécharge une vidéo
  • bibliothèque jQuery inclus dans la section

Mais quoi faire? Voici l'action du contrôleur pour télécharger une vidéo que je l'utilise:

public function uploadPublicVideoAction() 
{ 
    $request = $this->getRequest(); 
    $media = $this->_getTable('Media'); 

    $form = $this->_getForm('UploadPublicVideo', 
          $this->_helper->url('upload-public-video')); 
    // if POST data has been submitted 
    if ($request->isPost()) { 
     // if the UploadPublicVideo form has been submitted and the submitted data is valid 
     if (isset($_POST['upload_public_video']) && $form->isValid($_POST)) { 

      $data = $form->getValues(); 
      $data['user_id'] = $this->view->identity->id; 

      $ext = end(explode('.', $form->video->getFileName())); 

      $dbTrans = false; 

      try { 

       $db = $this->_getDb(); 
       $dbTrans = $db->beginTransaction(); 

       $data['type'] = 'video'; 
       $data['status'] = 'public'; 
       $paths = $media->add($data, $ext); 

       if (file_exists($paths[0])) { 
        unlink($paths[0]); 
       } 
       if (file_exists($paths[1])) { 
        unlink($paths[1]); 
       } 

       // add filter for renaming the uploaded photo 
       $form->video->addFilter('Rename', 
             array('target' => $paths[0], 
               'overwrite' => true)); 

       // upload the video 
       $form->video->receive(); 

       // create a thumbnail 
       //$this->_helper->FlvThumbnail($path[0], $path[1]); 

       $db->commit(); 

       $form->reset(); 

       $this->view->success = 'Public video successfully uploaded'; 

      } catch (Exception $e) { 
       if (true === $dbTrans) { 
        $db->rollBack(); 
       } 
       $this->view->error = $e->getMessage(); 
      } 

     } 
    } 

    $this->view->headTitle('Upload Public Video'); 
    $this->view->form = $form; 
} 

Quelqu'un peut-il me montrer d'une manière simple à utiliser Zend_Progressbar et jQuery ensemble pour atteindre une barre de progression de téléchargement dynamique?

+0

Pourriez-vous poster votre solution? J'essaye de réaliser la même chose. – Andrew

Répondre

1

Vous pouvez effectuer une scrutation longue (comète) ou courte (ajax) pour obtenir l'effet souhaité. Avec l'ancien, je suggère en fait la demande dans un iFrame et ayant votre code écrire JS qui seront exécutés comme ils viennent, ce dernier ne vient quelque chose comme:

var pollingId = window.setInterval(poll, 250); 
function poll(){ 
    //make an AJAX request, do something with it (like update your progress bar). 
    if(done){ 
     window.clearInterval(pollingId); 
    } 
} 
Questions connexes