使用 Blobstore 上传到 Google 云存储:Blobstore 在上传时不保留文件名

Uploading to Google Cloud Storage using Blobstore: Blobstore doesn't retain file name upon upload

我正在尝试使用 Blobstore 上传到 GCS。我在生成上传时设置了 GCS 存储桶名称 url,文件上传成功。

在上传处理程序中,blobInfo.getFilename() returns 正确的文件名。但文件实际上以不同的文件名保存在 GCS 存储桶中。每次,文件名都是这样的一些随机哈希:

L2FwcGhvc3RpbmdfcHJvZC9ibG9icy9BRW5CMlVvbi1XNFEyWEJkNGlKZHNZRlJvTC0wZGlXVS13WTF2c0g0LXdzcEVkaUNEbEEyc3daS3Vham1MVlZzNXlCSk05ZnpKc1RudDJpajF1TmxwdWhTd2VySVFLdUw3US56ZXFHTEZSLVoxT3lablBI

这是它的工作方式吗?这是异常吗?

我根据blobInfo.getFilename()返回的数据将文件名存储到数据存储中,这是文件名的正确值。但是我无法使用 GcsFilename 访问该文件,因为该文件存储在 GCS 中,并以该随机哈希作为文件名。

任何指点都会很有帮助。

谢谢!

PS: The blobstore page 表示 BlobInfo 当前不可用于 GCS 对象。但是 BlobInfo.getFilename returns 对我来说是正确的值。我这边有什么问题吗?

这就是它的工作原理,参见 https://cloud.google.com/appengine/docs/python/blobstore/fileinfoclas ...:[=​​14=]

FileInfo metadata is not persisted to datastore [...] You must save the gs_object_name yourself in your upload handler or this data will be lost

我个人建议新的应用程序直接使用 https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/,而不是在它之上的 blobstore 模拟。

后者目前基本上只是为了(有限的、部分的)向后兼容性而提供的:它并不是真正适合新的应用程序。