当前位置: 首页 > 知识库问答 >
问题:

将App Engine Blobkey解码为Google云存储文件名

曹超
2023-03-14

我有一个数据库,里面充满了以前通过标准的Google App Engine create_upload_url()过程上传的BlobKeys,通过设置gs_bucket_name参数,每个上传都到同一个Google Cloud Storage bucket中。

我想做的是能够解码现有的blobkeys,这样我就可以获得他们的谷歌云存储文件名。我知道我可以使用FileInfo类中的gs_object_name属性,但以下情况除外:

您必须将gs_object_name自己保存在上传处理程序中,否则该数据将丢失。(GCS中对象的其他元数据自动存储在GCS中,因此您不需要将其保存在上传处理程序中。

这意味着gs_object_name属性仅在上传处理程序中可用,如果我当时没有保存它,那么它就丢失了。

另外,create_gs_key()不起作用,因为它取而代之的是一个google存储文件名并创建一个blobkey。

那么,我如何获取以前通过app engine上传到谷歌云存储桶的blobkey,并获得它的谷歌云存储文件名呢?(python)

共有1个答案

谭仰岳
2023-03-14

您只能在上传处理程序(fileinfo.gs_object_name)中获取cloudstorage文件名,并将其存储在数据库中。之后,它就丢失了,并且似乎没有保存在BlobInfo或其他元数据结构中。

谷歌表示:与BlobInfo元数据不同,FileInfo元数据不会持久化到DataStore。(也没有blob键,但是如果需要,您可以稍后通过调用create_gs_key创建一个blob键。)您必须将gs_object_name自己保存在上传处理程序中,否则该数据将丢失。

 类似资料:
  • 我正在运行一个部署到Google App Engine的Node.js应用程序。我还使用了winston库和'StackDriver Logging winston Plugin'[@google-cloud/logging-Winston]。 “链接到温斯顿日志设置教程” “链接到将日志导出到谷歌存储桶的教程” 我通过创建一个接收器将stackdriver日志导出到Google存储桶。目前,所有

  • 我正在使用Spring引导连接到谷歌云存储。 我能够连接到一个文件,并从谷歌云存储桶中读取内容。 但是我不能得到谷歌云存储桶中所有文件的列表。 请帮帮我。 这很有效 这不工作。 有什么原因吗?

  • 我在本地开发服务器上运行代码,但使用在项目上配置的GCS默认桶名。 Python 2.7版

  • 这是可行的,但这里的问题是,在流回此方法的客户端之前,它必须首先缓冲所有字节。这会导致很多延迟,尤其是当存储在GCS中的文件很大时。 是否有一种方法可以从GCS获取文件并将其直接流到OutputStream,这里的OutputStream是针对servlet的。

  • 我正在尝试建立一个基于python的基本谷歌应用引擎站点,允许用户将文件上传到谷歌云存储(主要是图像) 我已经阅读了JSON API和GCS客户端库概述(以及blobstore等)的文档,但仍然没有很好地了解哪种方法是最好的以及它们之间的关系。如果有人能概述一下,或者给我指出一些我可以查看的资源,那就太好了 此外,任何相关的示例代码都会非常有用。我已经能够在此处运行上载示例,但不确定它们是否对应用

  • 如果在GCS上存储了一个。txt文件,该文件包含将用作一部分的单词列表,可以在apache beam管道中动态访问该列表吗?我知道我可以将这个列表定义为管道中的全局变量,但我不确定如何将整个文件读入列表,以及是否有任何beam技巧来实现这一点。有什么建议吗?这是我当前的实现,这是不工作的… 我得到以下错误“TypeError:类型'_invalidunpickledpCollection'的参数不