Я работаю над новостным приложением и хотел бы кэшировать новостные изображения на своем собственном облачном хранилище Google.Как загрузить изображение из Интернета в Google Cloud Storage?
Я планирую использовать колбу на GAE. Все примеры, которые я нашел, связаны с загрузкой файла из браузера пользователя в облачное хранилище.
Каков наилучший способ получить изображение с помощью URL-адреса и загрузить его в облако Google Cloud? Надеюсь, это имеет смысл, пожалуйста, предлагайте улучшения. Большое спасибо
def main():
bucket_name = os.environ.get('BUCKET_NAME',
app_identity.get_default_gcs_bucket_name())
bucket = '/' + bucket_name
filename = bucket + '/image_name'
image_url = "http://news.com/crash.jpg"
try:
create_file(image_url, filename)
except Exception, e:
logging.exception(e)
return "Success", 201
def create_file(image_url, filename):
image = cStringIO.StringIO(urllib.urlopen(image_url).read()) // Not sure about this
img = Image.open(image)
write_retry_params = gcs.RetryParams(backoff_factor=1.1)
gcs_file = gcs.open(filename,
'w',
content_type='image/jpeg', // ???? Is MIME type correct?
options={'x-goog-acl': 'public'},
retry_params=write_retry_params)
gcs_file.write(img)
gcs_file.close()
Большое спасибо. 1) Я не думаю, что вам нужно 'image = images.Image (image_bytes)' больше. 2) код выглядит очень многообещающим, но он не работает. Ты это пробовал? – Houman
Да, это действительно работает. Я использую это с моими флеш-приложениями. Убедитесь, что вы предоставили разрешение на использование GAE для вашего ведра: https://developers.google.com/appengine/docs/python/googlestorage/index#Prerequisites Я добавил комментарий о том, почему я использую преобразование изображения – GAEfan
Он работает сейчас. Большое спасибо за вашу помощь. Отличная идея с изменением размера изображений. Я предполагаю, что имею такое требование, как это означает, я не могу использовать BlobStorage и должен придерживаться Cloud Storage, так как запись файла прежнего устарела. благодаря – Houman