0

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

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

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

有任何想法吗?

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

4

3 回答 3

1

有一个关于如何使用 Google App Engine 提供动态图像的 GAE 教程。包括解释和可下载的源代码。

于 2009-04-15T05:59:12.393 回答
0

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

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

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

于 2009-04-14T19:14:49.213 回答
0

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

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

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

myentity.key().name()

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

于 2009-04-15T15:36:58.357 回答