[mod_python] Upload progress indicator shows after upload?

Graham Dumpleton grahamd at dscpl.com.au
Wed Aug 2 19:20:45 EDT 2006


Colin Bean wrote ..
> Unfortunately, what you're trying to do is more complicated than this.
>  First of all, by the time your handler is called, the file has
> already been sent over the network, and your handler is only reading
> it from a tempfile on disk.  Also, a handler only sends one response
> back after running to completion, so your code is behaving as
> expected.  It finishes processing the file upload (including doing
> everything in your loop), and when it's finished it sends a response
> back to the client.
> 
> Sorry I can't provide more constructive feedback having never actually
> implemented something like this.  To take a guess at it, you'd need to
> use an InputFilter to examine the upload request as it is read (I
> believe this phase happens before the tempfile is written to disk),
> and this would need to somehow communicate with another mod_python
> handler which would return the current upload progress.  The client
> page wold have to keep polling this handler (with an XMLHttpRequest,
> perhaps) and display the results it gets with each poll.  Yeah, it's
> pretty ugly...

Except that a subsequent request to try and monitor progress may in a multi
process version of Apache end up at a different process and will not have
access to where the original request is up to.

In short, there are many reasons why a progress meter is hard to implement and
may not even give a correct indication of what is happening anyway.

Personally, I am not sure what the fascination is with them besides the eye
candy value of it.

Graham

> HTH,
> Colin
> 
> 
> On 8/1/06, jadacyrus <jadacyrus at gmail.com> wrote:
> > Essentially this is what I have setup for my upload script:
> >
> > [code]
> >
> > #HTML Stuff here
> > #Declare variables etc...
> >
> >     while bytes_left >= 0:
> >             fileData = req.form['filename'].file.read(1024)
> >             filebuffer = filebuffer + fileData
> >             bytes_left = bytes_left - 1024
> >             bytes_read = bytes_read + 1024
> >             percent = bytes_read/int(length) * 100
> >
> > #Some nested IF statements to display a progress indicator using images
> > based on the percent variable.
> >
> > [/code]
> >
> > This is contained in my upload.py in the function upFile which is called
> > from the POST method. However, It seems that the file uploads completely
> > first and then it will show the progress indications afterwards. However
> > this doesn't seem to be logically what my code should be doing. I'm
> > somewhat new to mod_python but not python in general, any suggestions?
> > _______________________________________________
> > Mod_python mailing list
> > Mod_python at modpython.org
> > http://mailman.modpython.org/mailman/listinfo/mod_python
> >
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python


More information about the Mod_python mailing list