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

时间:2013-11-20 03:37:04

标签: python google-app-engine google-cloud-storage

我正在尝试弄清楚如何在开发服务器上使用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"))

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是get_serving_url,现在可以与Google云端存储配合使用。它在使用开发服务器时也应该有效。

有关详细信息,请参阅this question