简体   繁体   中英

Implementing file upload progress with Zend

Hi Im attempting to implement upload progress with Zend however I havent found any detailed tutorials. A pointer would be useful.

Thanks.

I don't remember having ever seen a fully-detailled tutorial explaining how to get a progress bar for uploads with Zend Framework ; but here are a few pointers, that should guide you a bit, provided you already know so stuff about PHP, file uploads, and Zend Framework...

First of all, you'll need one of those two PHP extension installed :

Which mean you'll be able to get that kind of progress bar only if you are admin of your server (those kind of extensions are generally not installed by default -- and not on shared hosting)


Then, you have to use some special "hidden" fields in your upload form ; about that, you can take a look at the configuration options of APC ; especially those related to RFC 1867.

If you are using Zend Framework, I suppose you are already using some Zend_Form_Element_File in your form. It should already do what is necessary about those fields -- you'd better check that, to be sure, btw.


Now that you form is OK, you can finally take a look at Zend_ProgressBar , and at the documentation chapter that describes Progress for file uploads

Your code will probably look a bit like this (quoting the doc) :

$adapter = new Zend_ProgressBar_Adapter_Console();
$upload  = Zend_File_Transfer_Adapter_Http::getProgress($adapter);

$upload = null;
while (!$upload['done']) {
    $upload = Zend_File_Transfer_Adapter_Http:getProgress($upload);
}

And, to fetch that information regularly, you'll have to do some polling from the web page, using some kind of Ajax requests.


About the uploadprogress extension, you can take a look at these articles :

Those posts are not specifically targetting Zend Framework, but might give you an idea of what is going on ;-)


BTW, you'll probably want to test all that on your local machine, which is easier to develop... And that will mean that file upload will really be fast ; which is not quite good to test any kind of progress upload indicator...

About that, you might be interesting in "slowing down" your local network interface ; those might help :


Hope this helps at least a bit ;-)

And, while you're at it : why don't you write down your findings into some kind of nice and detailled tutorial ? That might be useful to some people ;-)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM