simple module question
valery+nginxen at grid.net.ru
Sat Jul 12 02:33:43 MSD 2008
Manlio Perillo wrote:
> Valery Kholodkov ha scritto:
>> In my patch for processing uploads you can find an API to process
>> multipart/form-data bodies:
>> What you need are files upload.c and upload.h.
>> I'm actually working now on the next version of this module which will
>> be able to cut out and store uploaded files in temporal directory and
>> proxy the remaining part of the body to a backend with brief
>> information about files uploaded.
> My idea is to:
> 1) Modify the content-type from multipart/form-data to
> 2) Any non file parts are urlencoded and written to the new body
> 3) Files are written to temporary files, and in the new body is written:
> where name is the field name and path is the temporary path used to
> store the file.
> With this method an application needs only to care about urlencoded
> request body.
The problem with application/x-www-form-urlencoded is that it is
percent-encoded and multipart/form-data is not, thus requiring us to
deal with encoding, etc. Dealing with encodings is generally a bad idea
and I prefer to think about request body as a stream of bytes.
Another problem is that if we rename attributes to name.filename= and
name.path= this will require modifying existing applications and such
thing would be quite unuseful.
Therefore what I do now is transferring almost identical request body to
the backend with file fields converted to normal fields containing
<temporary file name> <content type> <original file name>
The current code is available under
but it has a problem with generating header for error responses. Use it
on your own risk.
More information about the nginx