在本地开发服务器上使用get_serving_url()提供图像时出现问题

时间:2019-01-29 19:36:33

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

我已将一些示例图像上传到GCS存储桶,并尝试根据图像生成URL,如下所示:

    filename = "/gs/ABC/abc.jpeg"
    blobkey = blobstore.create_gs_key(filename)
    serving_url = images.get_serving_url(blobkey, secure_url=True)

我得到的serving_url是这样的 http://127.0.0.1:8080/_ah/img/encoded_gs_file:dGVzdGltYWdlczEvaWc=

但是每当我在浏览器中访问URL时,都会在控制台日志中收到以下消息:

找不到键为已编码的gs_file:dGVzdGltYWdlczEvaWc = s200的blob

有人知道为什么这行不通吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我相信appengine本地主机使用的是从本地temp文件夹中挂载的假GCS(因此前缀为encoded_gs_file:)。

您可以通过指定存储桶名称并执行

来获取cloudstorage库来访问您的实际存储桶
cloudstorage.common.set_access_token(gcs_token)

其中gcs_token等于

的输出
gcloud auth application-default print-access-token

有关更多信息,请参见此答案:https://stackoverflow.com/a/33838216/4458510

但是我不确定blobstore.create_gs_key()images.get_serving_url()是否可以强制使用非本地路径。

我实际上有一个初始化脚本来用生产数据填充本地主机,也许您也想制作一个脚本来下载这些文件并将它们注入您的本地环境。