2010-12-30 2 views
4

UPDATEКак использовать Blobstore Google App Engine, чтобы сохранить веб-изображения

Этот вопрос был первоначально просил в то время, когда не было никакой поддержки для создания программного файла (с помощью URL, например). Это изменилось: http://code.google.com/appengine/docs/java/blobstore/overview.html#Writing_Files_to_the_Blobstore

Я получаю доступ к нескольким различным API-интерфейсам для извлечения изображений. Мое приложение - GAE + Python, и я хочу использовать Blobstore для сохранения этих изображений. Документация GAE Blobstore дает четкие примеры того, как сохранять изображения в Blobstore через форму, но не напрямую из URL-адреса.

http://code.google.com/intl/iw/appengine/docs/python/blobstore/overview.html#Writing_Files_to_the_Blobstore

Я хочу знать, как сохранить http://api.website.com/images/foo.jpg в Blobstore.

+0

Кто-нибудь знает, о любом альтернативном решении, которое не устарело для сохранения изображений в Blobstore по ссылке (вместо загрузки через форму). GAE Python .. – gsinha

ответ

2

Использование нового API файла в сочетании с UrlFetch API вы должны быть в состоянии передать URL изображения через форму, принеси его на стороне сервера и записать его на Blobstore:

http://code.google.com/intl/iw/appengine/docs/python/blobstore/overview.html#Writing_Files_to_the_Blobstore

+1

Слишком плохо, что функция записи файла устарела. – nimcap

+0

знает о любом альтернативном решении, которое не устарело для сохранения изображений из ссылки (вместо загрузки через форму). – gsinha

0

Вы можете написать дополнительный обработчик для загрузки содержимого входного URL-адреса в обработчик хранилища blob. то есть автоматизировать процесс подачи формы. сделайте запрос POST обработчику хранилища blob и url закодируйте изображение.

Но единственная проблема была бы в том, что если файл слишком велик, тогда вы можете получить исключения тайм-аута.

2

HTTP POST для вашей собственной формы работает. Я не пытался отправить файл, но вот как я могу отправить форму. Вы можете получить файл из Интернета, добавить его в форму, и файл будет храниться в вашем блочном магазине.

import urllib 
data = urllib.urlencode({"id":str(id), "password" : self.request.POST['passwd'], "edit" : "edit"}) 
result = urlfetch.fetch(url="http://www.montao.com.br/upload", 
payload=data, 
method=urlfetch.POST, 
headers={'Content-Type': 'application/x-www-form-urlencoded'}) 

Там же подобный вопрос ответил here

Я надеюсь, что это работает для вас.

+1

Добавление контекста blobstore к этому. 'result = urlfetch.fetch (url = blobstore.create_upload_url ('http://www.montao.com.br/upload'), ...)' the ** blobstore.create_upload_url ** предоставляет «завернутый» URL-адрес пост в blobstore, который вызовет ваш обработчик загрузки после того, как blobstore поглотит опубликованный img с помощью 'blob_info'. – kevpie

+0

Все еще проверяя это. Будет обновляться с результатами. –

+0

Вы когда-нибудь получали эту работу? Я использовал этот подход как модель, но у меня проблемы. http://stackoverflow.com/questions/5370113/how-do-i-save-web-images-to-app-engines-blobstore –

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