Google app engine 将应用程序引擎Blobkey解码为Google云存储文件名

Google app engine 将应用程序引擎Blobkey解码为Google云存储文件名,google-app-engine,blobstore,google-cloud-storage,Google App Engine,Blobstore,Google Cloud Storage,我有一个满是BlobKeys的数据库,这些BlobKeys以前是通过标准的Google App Engine过程上传的,通过设置gs_bucket_name参数,每次上传都会进入同一个Google云存储桶 我想做的是能够解码现有的blobkeys,这样我就可以得到他们的Google云存储文件名。我理解我可能一直在使用来自的属性,除了: 您必须将gs_对象_名称保存在上载处理程序或 这些数据将丢失。(存储GCS中对象的其他元数据 自动在GCS中,因此您无需将其保存在上载处理程序中 意思是gs\u

我有一个满是BlobKeys的数据库,这些BlobKeys以前是通过标准的Google App Engine过程上传的,通过设置
gs_bucket_name
参数,每次上传都会进入同一个Google云存储桶

我想做的是能够解码现有的blobkeys,这样我就可以得到他们的Google云存储文件名。我理解我可能一直在使用来自的属性,除了:

您必须将gs_对象_名称保存在上载处理程序或 这些数据将丢失。(存储GCS中对象的其他元数据 自动在GCS中,因此您无需将其保存在上载处理程序中

意思是
gs\u object\u name
属性仅在上载处理程序中可用,如果我当时没有保存它,那么它将丢失

另外,它也没有这样做,因为它取而代之的是一个google存储文件名并创建一个blobkey


那么,我如何获取之前通过app engine上传到Google云存储桶的blobkey,并从文档中的语句中获取它的Google云存储文件名?(python)

,生成的GCS文件名似乎丢失了。您必须使用gsutil手动浏览您的存储桶


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

谷歌表示:与BlobInfo元数据不同,FileInfo元数据不是 持久化到数据存储。(也没有blob键,但您可以 如果需要,请稍后通过调用create_gs_key创建一个。)您必须保存 gs_对象_在上载处理程序中为自己命名,否则此数据将被删除 迷路了

更新:我能够在Blobstore查看器中解码SDK BlobKey:“encoded_gs_file:base64 encoded filename here”。但是真正的东西不是base64编码的


创建一个加密的blob密钥(filename,rpc=None)…谷歌说:“以字符串的形式返回一个加密的blob密钥。”有人知道为什么会加密吗?

如果你有blobKeys,你可以使用:ImagesServiceFactory。

据我所知,你只能重写blob,这意味着逐字节读取它并将其再次写入cloudstorage,类似于重命名cloudstorage文件,但这次保存的是cloudstorage路径,而不是blobkey.Blo保存cloudstorage对象的bKeys似乎处于“monkeypatch”状态。可能是加密的,因为它包含访问令牌。