[ 
https://issues.apache.org/jira/browse/COUCHDB-1705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14273023#comment-14273023
 ] 

Alexander Shorin commented on COUCHDB-1705:
-------------------------------------------

That's for case when you're going to make an attachment. If I have a update 
function which takes some text, parses it and generates a document you need 
access to raw req.body data, not base64-encoded.

I see the following solutions here:

1. Provide additional field {{bodyB64}} with base64 encoded body, handle body 
serialization crash correctly and set it as {{null}} in that case.
Pro: we avoid crash for binary data, keep access to raw text and are able to 
easily put it into attachments with no serialization.
Cons: this boosts commands size for query server for 2.3 times.

2. Provide base64 helper for query server and always encode body with base64
Pro: no much overhead for passed data around (just 30%).
Cons: we breaking all existed functions which uses {{req.body}} for some way. 

3. Try to be smart and encode only those payloads which are uses to be binary. 
We have at least to MIME types (application/json and 
application/www-formencode) which additionally get parsed into friendly 
structure. +Provide base64 helper.
Pro: at most preserve backward compatibility and provide helper to deal with 
b64encoded data in case of our failure.
Cons: need a bit more work around.



> Update Function does not parse multipart/form-data
> --------------------------------------------------
>
>                 Key: COUCHDB-1705
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1705
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>    Affects Versions: 1.2.1, 1.6.1
>            Reporter: Anthony Ananich
>         Attachments: base64.patch
>
>
> I have a design doc and update handler.
> {quote}
> function(doc, req) {
>     log(req);
>     var newdoc = {};
>     ...
>     return [newdoc, \{
>       code: 200,
>       body: req.uuid
>         }];
> }
> {quote}
> I made a HTML file with the following form
> {quote}
> <form action="http://localhost:5984/db/_design/app/_update/crashreport"; 
> method="POST" enctype="multipart/form-data">
> <input type="text" name="classname"/><br>
> <input type="Submit">
> </form>
> {quote}
> In the log file I can see that POST request body exists, but was not parsed:
> {quote}
> { "body" : "------WebKitFormBoundaryE6xRBni3g8MNw14P\r\nContent-Disposition: 
> form-data; 
> name=\"classname\"\r\n\r\nABC\r\n------WebKitFormBoundaryE6xRBni3g8MNw14P--\r\n",
>   "form" : {  },
> ...
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to