为什么在GAE上部署应用程序时,不会在数据存储区中创建名称为_BlobInfo_的实体类型?

Rag*_*mar 6 java google-app-engine blobstore google-cloud-datastore

当我们将文件上传到Google App Engine上的Blobstore时,我们发现每次上传_BlobInfo_都会创建一个类型的实体,可以在数据存储区查看器下的本地开发控制台中看到http://localhost:8888/_ah/admin,但是在将应用程序部署到App Engine之后,不会创建这样的实体当我们将文件上传到Blobstore时.它看起来很奇怪,想知道我在这里是否遗漏了什么.

icz*_*cza 4

_BlobInfo_不是特殊名称,您的应用程序很可能不会创建具有此名称的实体。

在生产环境中__BlobInfo__,是用于存储 Blobstore 中存储的 Blob 信息的内部名称。请注意,该单词前后有两个下划线字符 ( ) 。仅当您的应用创建 Blob 并将其保存到 Blobstore 时,才会创建此实体。_BlobInfo

由于这是一个内部实体,因此默认情况下将其从数据存储查看器中排除。它也从“数据存储统计信息”页面中排除,但它们显示在BlobInfo“种类”下:“所有实体”。
通过使用一个小技巧,您还可以显示__BlobInfo__实体的详细统计信息:从下拉列表中选择任何实体,页面重新加载后,将 url 中的参数修改kind=XXXkind=__BlobInfo__并按 Enter 键。现在,页面将重新加载,显示统计信息,即使它在下拉列表中隐藏。

但是,您可以列出这些实体。例如,转到管理控制台的数据存储查看器,然后选中“按 GQL”,以便您可以输入 GQL 来列出您的实体。现在输入以下 GQL 查询:

SELECT * FROM __BlobInfo__
Run Code Online (Sandbox Code Playgroud)

这将列出您的BlobInfo实体。

请注意,管理控制台的 Blob 查看器页面还会根据 name 下存储的实体显示 Blob __BlobInfo____BlobInfo__实体还包含更多属性,而不仅仅是 Blob 查看器页面上显示的属性。

所有属性如下:

  • 身份证/姓名
  • 内容类型
  • 创建
  • 创建句柄
  • 文件名
  • md5_哈希值
  • 尺寸
  • 上传id

如果您碰巧查询这些实体,也可以从您的应用程序中获取这些实体。

  • 感谢您详细而富有启发性的解释!;) (2认同)