2010-01-27 3 views
6

Стандартный API AppEngine предполагает, что файлы загружаются из HTML-формы. Я пытаюсь отправить файл в Blobstore из метода REST API, который можно назвать лицом, не являющимся клиентом сайтов (Flash, iPhone и т.д.)Прямое размещение данных в Blobstore AppEngine

Код я пытаюсь получить работу:

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

Я получаю следующее сообщение об ошибке:

ValueError: Invalid boundary in

Любая идея?
Пробовал ли кто-нибудь отправляться в блоб-магазин не через веб-форму?

multipart form: ''

ответ

4

Вы не можете сделать обычный пост в многочастную форму, просто указав тип контента - вы просто представление данных URL-закодировано с неправильным типом контента.

Вам необходимо собрать надлежащую многочастную форму - используя модуль email или вручную, например this.

См. Также this question.

7

App Engine (version 1.4.3) allows you to directly write data to the blobstore.
Вам больше не нужно использовать метод URL-адреса для загрузки.

+0

правый, обратите внимание, шляпа эта функция отмечена как экспериментальная (не знаю, что это значит) –

+5

@Yonatan Это означает «Не плачь, если это не работает и сломает ваш сайт» :), а также «Мы можем изменить API до окончательного изменения» –

+1

выглядит так, как будто он устарел сейчас – emerix

Смежные вопросы