Hi,
I'm trying to implement an API to a website which didn't have an API
yet. It's purpose will be to allow file uploads from 3rd party native
apps.
I'd like to implement the API like Dropbox v2 API, just as a good
reference for API design.
It's upload endpoint has the following specs:
https://www.dropbox.com/developers/documentation/http/documentation#files-upload
And the following cURL example:
curl -X POST
https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer " \
--header "Dropbox-API-Arg: {\"path\":
\"/Homework/math/Matrices.txt\",\"mode\": \"add\",\"autorename\":
true,\"mute\": false}" \
--header "Content-Type: application/octet-stream" \
--data-binary @local_file.txt
Now my problem is that I've implemented most parts, but if the request
has --header "Content-Type: application/octet-stream" then WebOb
doesn't allow using request.POST. It says:
Not an HTML form submission (Content-Type: application/octet-stream)
If I remove that header, I can use request.POST.keys()[0] to read the
contents of the file as a string.
My question is:
1. What am I doing wrong that the Content-Type is not supported?
2. Is there any downside of having an up-to-100 MB file as a string?
Wouldn't the HTML multipart-form-data's file solution use less memory?
Can I make WebOb handle this kind of uploads like it does multipart
ones?
Zsolt