在开发服务器上使用Google Cloud Storage客户端库显示图像

nnihil 发布于 2019-04-15 python 最后更新 2019-04-15 22:59 18 浏览

我试图弄清楚如何在开发服务器上使用Google Cloud Storage客户端库显示图片。我想出了如何上传照片。但不知道如何让它在使用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"))
已邀请:

sunde

赞同来自:

我认为您正在寻找的是get_serving_url,现在可以与Google云端存储配合使用。它在使用开发服务器时也应该有效。 有关详细信息,请参阅this question