Zend_Progressbar + jQuery bir video yükleme

1 Cevap php

Ben bir video (*. Flv formatında) yüklenirken benim applciation dinamik bir ProgressBar göstermek istiyorum. Ben en fazla 2 saat Web'de arama ama ben bu süreç boyunca bana rehberlik etmek için herhangi bir öğretici bulamıyorum.

Ben bugüne kadar ne:

  • Bir video yükler betik
  • jQuery kütüphane bölümde yer

Ama sonra ne yapmalı? Burada kullandığım bir video yükleme için denetleyici eylem:

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;
}

Herkes bana bir dinamik yükleme ProgressBar ulaşmak için birlikte Zend_Progressbar ve jQuery kullanmak için basit bir yol gösterebilir misiniz?

1 Cevap

Sen istenen etkiyi elde etmek için uzun (kuyruklu yıldız) veya kısa çağırmayı (ajax) birini yapabilirsiniz. Eski ile ben bir iFrame içinde talepte ve kod geldikleri sırada gibi bir şey yapmak ikincisi ile, icra olsun hangi JS yazmak sahip öneririm:

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);
   }
}