2010-01-27 11 views
6

La API estándar de AppEngine supone que los archivos se cargan desde un formulario HTML. estoy tratando de publicar un archivo en el almacén de blob de un método de API REST que puede ser llamado por un cliente que no sea HTML (Flash, iPhone, etc.)Colocando datos directamente en Blobstore de AppEngine

El código que estoy tratando de conseguir trabajo:

# 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'}) 

estoy recibiendo el siguiente error:

ValueError: Invalid boundary in

Alguna idea?
¿Alguien ha intentado publicar en blobstore a través de un formulario web?

multipart form: ''

Respuesta

4

No se puede hacer un post regular en un impreso de varias copias simplemente especificando el tipo de contenido - sólo vas a enviar datos con codificación URL con el tipo de contenido incorrecto.

Tendrá que armar una forma multiparte adecuada - utilizando el módulo email o a mano, como this.

Ver también this question.

7

App Engine (version 1.4.3) allows you to directly write data to the blobstore.
Ya no es necesario utilizar el método de cargar URL.

+0

right, tenga en cuenta que esta función está marcada como Experimental (no sé lo que significa) –

+5

@Yonatan Significa "No vengas llorando si no funciona y rompe tu sitio" :) y también "Podríamos cambiar la API hasta que final relase" –

+1

parece que está obsoleto ahora – emerix

Cuestiones relacionadas