Project

General

Profile

Actions

Docs ModUploadProgress » History » Revision 11

« Previous | Revision 11/22 (diff) | Next »
Mave99, 2008-12-21 23:47


TracNav(DocsToc)


#!rst
=======================================
Uploadprogress with Lighttpd 1.5.x(svn)
=======================================

--------------------------
Module: mod_uploadprogress
--------------------------

.. meta::
  :keywords: lighttpd, upload, progress

.. contents:: Table of Contents

Options
=======

::

  upload-progress.progress-url   = <string> (empty by default, use "/progress" (or something else) to enable the module)
  upload-progress.remove-timeout = <short>  (default: 60 seconds)
  upload-progress.debug          = "(enable|disable)"  (default: "disable")

Description
===========

This module can be used to track the progress of a current upload.

When a file upload is done, the current received bytes are tracked
with this module and can be retrieved via the progress-url and the
tracking key. This key has to be added to the upload url or via
header.

In combination with server.max-request-size, usually the browser
will display an error page containing information that the connection
has been terminated. This can not be replaced with a custom error
page, the browsers aren't displaying them.

The uploadprogress module tracks this errors now. If the upload
is done in one window (or an iframe which will be hidden on form submit), 
another iframe can display a custom uploadprogress page which can 
also fetch the status 413 via json if this happen. If 413 is retrieved,
a custom error message (File is too big) can be displayed.

The first examples can be found at 
http://blog.lighttpd.net/articles/2006/08/01/mod_uploadprogress-is-back

The mentioned multi-frame example will be added in the future.

JSON
====

The returned json may contain:

state:
    current state of upload
    values = starting, error, done, uploading

status:
    http error status
    values = 413

size:
    size of request

received:
    bytes received by lighttpd yet

Example
=======

Three html-files are appended as example, based on Jan's work mentioned
at the link above. You need to add the tracking_id (an example how this is
done with a single page upload and javascript is also provided at Jan's blog).

In the iframe version, you can generate the tracking_id via php or other
server-side scripting.

Warning, the files are not working out of the box, you have to change things!

Downloads
=========
index.html  - main page                
    http://trac.lighttpd.net/trac/attachment/wiki/Docs/ModUploadProgress/index.html

status.html - page containing progress 
    http://trac.lighttpd.net/trac/attachment/wiki/Docs/ModUploadProgress/status.html

upload.html - page posting the file    
    http://trac.lighttpd.net/trac/attachment/wiki/Docs/ModUploadProgress/upload.html

Note

Since lighttpd v1.5 r1896 there has been a slight change in the upload url (see http://trac.lighttpd.net/trac/ticket/1300), the url format of the page to POST upload to changed from this format:

http://example.com/upload.php?&lt;32_character_unique_id_goes_here>

to this format

http://example.com/upload.php?X-Progress-ID=&lt;32_character_unique_id_goes_here>

notice the X-Progress-ID=<32_character_unique_id_goes_here> key => value pair

theres a new example (using YUI framework) here
http://trac.lighttpd.net/trac/attachment/ticket/1300/index.2.html

beware of max-worker, uploadprogress will not work when using more than one worker. You get more informations here http://redmine.lighttpd.net/wiki/lighttpd/Docs:MultiProcessor.

hope this helps people

Updated by Mave99 over 15 years ago · 11 revisions