The AppEngine's standard API assumes files are uploaded from an HTML form. I'm trying to post a file to the blobstore from a REST API method that can be called by a non Html client (Flash, iPhone, etc.)
The code I'm trying to get working:
# Get the blobstore upload url
upload_url = blobstore.create_upload_url("/activities/upload_finished");
# Make sync call to the blobstore url to post our image
result = urlfetch.fetch(url=upload_url,
payload=request.FILES,
method=urlfetch.POST,
headers={'Content-Type': 'multipart/form-data'})
I'm getting the following error:
ValueError: Invalid boundary in
Any idea?
Has anyone tried posting to the blobstore not through a web form?
multipart form: ''
You can't make a regular post into a multipart form simply by specifying the content type - you're just submitting URL-encoded data with the wrong content type.
You'll need to assemble a proper multipart form - using the email module or by hand, like this.
Also see this question.
App Engine (version 1.4.3) allows you to directly write data to the blobstore.
You no longer need to use the upload url method.