У меня есть веб-приложение Flask, работающее в Google AppEngine. Приложение имеет форму, которую мой пользователь будет использовать для предоставления ссылок на изображения. Я хочу загрузить данные изображения из ссылки, а затем загрузить ее в ведро Google Cloud Storage.Загрузка данных изображения затем загрузка в Google Cloud Storage
Что я нашел до сих пор в документации Google, я предлагаю использовать библиотеку клиентов cloudstorage, которую я установил и импортировал как «gcs».
найдено здесь: https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/read-write-to-cloud-storage
Я думаю, что не правильно обрабатываю данные изображения через запросы. Я получаю код 200 из вызова загрузки облачного хранилища, но нет объекта, когда я ищу его в консоли. Вот где я стараюсь, чтобы получить изображение, а затем загрузить его:
img_resp = requests.get(image_link, stream=True)
objectName = '/myBucket/testObject.jpg'
gcs_file = gcs.open(objectName,
'w',
content_type='image/jpeg')
gcs_file.write(img_resp)
gcs_file.close()
редактировать: Вот мой обновленный код, чтобы отразить предложение ответа в:
image_url = urlopen(url)
content_type = image_url.headers['Content-Type']
img_bytes = image_url.read()
image_url.close()
filename = bucketName + objectName
options = {'x-goog-acl': 'public-read',
'Cache-Control': 'private, max-age=0, no-transform'}
with gcs.open(filename,
'w',
content_type=content_type,
options=options) as f:
f.write(img_bytes)
f.close()
Однако, я все еще получаю 201 ответ на вызов POST (создать файл), а затем 200 на вызов PUT, но объект никогда не появляется в консоли.
Я попытаюсь это, благодаря –
Там до сих пор нет ни одного объекта, показывая в ведро. Я получаю 201 от GCS для вызова объекта создания, а затем 200 для вызова PUT, так что это не значит, что это было успешным? Кроме того, это выполняется на сервере dev_appserver.py –
Я только что отредактировал, чтобы добавить некоторые параметры для ведра и использовать оператор 'with' для записи. Можете ли вы проверить ввод формы и что это правильный URL-адрес, указывающий на jpg-образ? (лучше всего установить 'content_type = content_type' и получить программный код content_type, как во второй части моего ответа.) – GAEfan