【发布时间】:2017-01-01 05:35:40
【问题描述】:
我有一个在 Google AppEngine 上运行的 Flask 网络应用。该应用程序有一个表单,我的用户将使用它来提供图像链接。我想从链接下载图像数据,然后将其上传到 Google Cloud Storage 存储桶。
到目前为止,我在 Google 的文档中发现的内容告诉我使用已安装并导入为“gcs”的“cloudstorage”客户端库。
在这里找到:https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/read-write-to-cloud-storage
我认为我没有通过请求正确处理图像数据。我从 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()
但是,我仍然在 POST(创建文件)调用中收到 201 响应,然后在 PUT 调用中收到 200,但该对象从未出现在控制台中。
【问题讨论】:
标签: python-2.7 google-app-engine flask python-requests google-cloud-storage