首页 文章

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

提问于
浏览
12

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

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

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

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

此外,create_gs_key()不会这样做,因为它取而代之的是谷歌存储文件名并创建一个blobkey .

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

3 回答

  • 2

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

    谷歌说:与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键作为字符串返回 . ”有没有人猜到为什么这是加密的?

  • 0

    从文档中的语句看,生成的GCS文件名似乎丢失了 . 您必须使用gsutil手动浏览您的存储桶 .

    https://developers.google.com/storage/docs/gsutil/commands/ls

  • 6

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

相关问题