1

我目前有两个选项可以在 blobstore 上存储一些图像。

我有一个用户模型class User(db.Model),我在其中为用户保存一个头像。一种选择是将头像另存为blobstore.BlobReferenceProperty() ,然后使用 user.avatar 参考中的 get_serving_url 提供图像。

class User(db.Model):
    avatar = blobstore.BlobReferenceProperty()

url = get_serving_url(user.avatar)

另一种选择是获取图像的路径get_serving_url()并将其作为 LinkProperty 保存在用户模型中,稍后只需使用此链接来提供图像。

url = get_serving_url(image_file)
class User(db.Model):
    avatar = db.LinkProperty()

这两种方法是否存在显着差异,如果是,哪种方法更可取?谢谢。

4

3 回答 3

2

你应该存储两者。BlobReference能够删除实际的 blob 和 URL,以避免每次调用,get_serving_url()这可能会很慢。get_serving_url()除非调用 ,否则返回的URL 是不可更改的delete_serving_url(),以防它需要重置,因为该 URL 是公共的但不可猜测。

于 2013-06-24T10:07:56.607 回答
1

您应该在模型中保存这两个参考。您使用 blobReferenceProperty 来引用 blob 的最新版本以进行维护(删除和更新)以及提供图像的 url,因为您只需要获取一次服务 url。

于 2013-06-24T10:03:06.263 回答
0

使用BlobReferenceProperty. 如果您存储 serving_url 您无法真正删除该 blob,因为您没有对它的任何引用。

于 2013-06-24T10:02:57.210 回答