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

ada*_*dam 12 google-app-engine blobstore google-cloud-storage

我有一个以前通过标准Google App Engine create_upload_url()过程上传的BlobKeys数据库,每个上传都通过设置gs_bucket_name参数转到同一个Google Cloud Storage存储桶.

我想要做的是能够解码现有的blobkeys,以便我可以获得他们的Google云端存储文件名.我知道我可以使用FileInfo类中gs_object_name属性,除了:

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

含义gs_object_name属性仅在上传处理程序中可用,如果我当时没有保存它,那么它就丢失了.

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

那么,我如何才能将之前通过应用引擎上传到Google云存储桶的blobkey获取并获取其Google云端存储文件名?(蟒蛇)

cat*_*cat 6

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

Google表示:与BlobInfo元数据不同,FileInfo元数据不会持久保存到数据存储区.(也没有blob键,但是如果需要,可以通过调用create_gs_key来创建一个.)必须在上传处理程序中自己保存gs_object_name,否则这些数据将丢失.

https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass

更新:我能够在Blobstore-Viewer中解码SDK-BlobKey:"encoded_gs_file:base64-encoded-filename-here".然而真实的东西不是base64编码的.

create_gs_key(filename,rpc = None)... Google说:"将加密的blob键作为字符串返回." 有没有人猜到为什么这是加密的?