我正在尝试弄清楚如何在开发服务器上使用Google云端存储客户端库显示图像。我想出了如何上传照片。但不确定如何在使用Flask时显示它。
如果我部署到App Engine,如果我直接链接到它们,我可以显示图像。就像我在模板中添加以下内容一样:
<img src="http://storage.googleapis.com/foo/{{ userid }}.jpg">
但是这在开发服务器上不起作用,因为上传实际上并没有到达App Engine。所以我想知道如何使用客户端库读取对象并在Flask中显示它们。
以下代码适用于POST(上传)部分。但是在GET上,我不知道该去哪里。要将图像放在模板上。我希望能够使用URL。
BUCKET = 'foo'
def account():
if request.method == "GET":
#not sure how to get the image to then display on the template
filename = "/".join(['', BUCKET, g.user.key.id()])
gcs_file = gcs.open(filename)
return render_template('users/account.html')
else:
image = request.files.get('file', None)
filename = "/".join(['', BUCKET, g.user.key.id()])
write_retry_params = gcs.RetryParams(backoff_factor=1.1)
with gcs.open(filename, 'w', content_type=image.mimetype,
retry_params=write_retry_params) as imageFile:
image.save(imageFile)
return redirect(url_for("users.account"))
答案 0 :(得分:1)
我认为您正在寻找的是get_serving_url
,现在可以与Google云端存储配合使用。它在使用开发服务器时也应该有效。
有关详细信息,请参阅this question。