2010-01-27 6 views
6

L'API standard d'AppEngine suppose que les fichiers sont téléchargés à partir d'un formulaire HTML. Je suis en train de déposer un dossier au blobstore à partir d'une méthode API REST qui peut être appelé par un client non Html (Flash, iPhone, etc.)Mise directe des données dans le blobstore d'AppEngine

Le code que je suis en train de faire fonctionner correctement:

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

Je reçois l'erreur suivante:

ValueError: Invalid boundary in

Toute idée?
Est-ce que quelqu'un a essayé de poster sur le blobstore à travers un formulaire web?

multipart form: ''

Répondre

4

Vous ne pouvez pas faire un poste régulier en une forme simplement en spécifiant multipart le type de contenu - vous simplement soumettre des données codées URL avec le mauvais type de contenu.

Vous aurez besoin d'assembler une forme multipart appropriée - en utilisant le module email ou à la main, comme this.

Voir aussi this question.

7

App Engine (version 1.4.3) allows you to directly write data to the blobstore.
Vous n'avez plus besoin d'utiliser la méthode url de téléchargement.

+0

droite, s'il vous plaît noter que cette fonctionnalité est marquée comme expérimentale (ne sait pas ce que cela signifie) –

+5

@Yonatan Cela signifie "Ne venez pas pleurer si cela ne fonctionne pas et briser votre site" :) et aussi "Nous pourrions changer l'API jusqu'à la version finale" –

+1

semble obsolète maintenant – emerix