【问题标题】:How can I associate images with entities in Google App Engine如何将图像与 Google App Engine 中的实体相关联
【发布时间】:2023-03-11 13:48:01
【问题描述】:

我正在开发一个 Google App Engine 应用程序,并且已经到了想将文件系统上的图像与数据库中的实体相关联的地步。

我正在使用 bulkupload_client.py 脚本将实体上传到数据库,但我一直在试图弄清楚如何将文件系统文件与实体相关联。如果一个实体有以下图像:main,detail,front,back 我认为我可能想要这样的命名方案:<entity_key>_main.jpg

我想我可以为每个实体创建一个 GUID 并使用它,但我宁愿不必这样做。

有什么想法吗?

我认为我不能使用实体键,因为它可能在本地和生产数据存储之间有所不同,所以我必须在生产批量上传后重命名我的所有图像。

【问题讨论】:

    标签: database image google-app-engine cloud


    【解决方案1】:

    有一个关于如何Serve Dynamic Images with Google App Engine 的 GAE 教程。包括解释和可下载的源代码。

    【讨论】:

      【解决方案2】:

      基于我对 GAE 的了解非常有限,我在这里看到了两个选项。

      首先,您实际上不能在 GAE 中向文件系统写入任何内容,对吗?这意味着您想要包含的任何图像都必须作为 Web 应用程序的一部分上传,因此将具有已知且不可更改的静态名称和目录结构。在这种情况下,您对 _main.jpg 或 /entity_key/main.jpg 的想法可以正常工作。

      第二个选项是将图像作为 blob 存储在数据库中。这可能允许动态上传图像,而不是每次需要更新图像时都必须上传新版本的 web 应用程序。它会很快占用您的免费数据库空间。以下是有关从数据库中提供图片的一些信息。 http://code.google.com/appengine/articles/images.html

      【讨论】:

      • 是的,我会在部署项目时上传图片。我认为我不能使用实体密钥,因为当我批量上传到我的开发数据存储和生产数据存储时它可能会有所不同。
      • 是的,您需要某种您可以控制并保证不会更改的标识符。
      【解决方案3】:

      如果您要静态上传图像,则可以根据需要使用基于键的方案:只需为实体分配一个键名称,然后使用该名称来查找关联的图像。您指定一个键名(在 Python 版本中)作为实体类的 key_name 构造函数参数:

      myentity = EntityClass(key_name="bleh", foo="bar", bar=123)
      myentity.put()
      

      您可以像这样获取实体的键名:

      myentity.key().name()
      

      听起来有问题的数据存储实体基本上是静态内容,所以也许你最好简单地将它们编码为源中的文字,从而将它们放在内存中,或者在运行时从本地数据文件加载它们,绕过需要为它们查询数据存储区吗?

      【讨论】:

        猜你喜欢
        • 2013-11-02
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多