Docs ModUploadProgress » History » Revision 16
Revision 15 (rush, 2012-08-11 10:42) → Revision 16/22 (gstrauss, 2016-09-11 00:55)
h1. Module mod_uploadprogress (1.5.x)
{{>toc}}
h2. Options
h3. upload-progress.progress-url
string, empty by default; use "/progress" (or something else) to enable the module
h3. upload-progress.remove-timeout
integer, default: 60 seconds
h3. upload-progress.debug
boolean, default: "disable"
h2. Config Example
<pre>
upload-progress.progress-url = "/progress"
upload-progress.remove-timeout = 30
upload-progress.debug = "enable"
</pre>
h2. Warning
This module will not work if you are using more than one worker ("server.max-worker":Server.max-workerDetails)
h2. 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.
h2. How to use it
Generate a progress-id (32 hex digits - just use a md5 hash); send this progress-id in the upload request and in all progress requests, either as "X-Progress-ID" header or as "X-Progress-ID" query string parameter.
h2. JSON Response
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
h2. Example 1
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
attachment:index.html
* status.html - page containing progress
attachment:status.html
* upload.html - page posting the file
attachment:upload.html
h2. Example 2
Theres a new example (using YUI framework) here:
http://redmine.lighttpd.net/attachments/399/index.2.html
h2. mod_uploadprogress for lighttpd-1.4 branch
I've backported mod_uploadprogress so you may use it together with lighttpd-1.4 branch if interested. You may download the patch at http://labs.logic.cz/patches/lighttpd/1.4.x/
Don't expect exactly the same behavior as this version returns JSON object for better integration with frameworks like Dojo. I've also tweaked the key names and some values returned.
We're using this patch for about half a year and it seems stable. Enjoy! ;-)