来自Blobstore的Blobkey Google应用引擎 Python

1 投票
1 回答
1028 浏览
提问于 2025-04-17 08:16

如何从一个存储大文件的地方(叫做blob store)获取到一个blob的关键字(blob key)?然后再根据这个关键字获取到图片的链接?

下面是一个示例代码:

class Next(webapp.RequestHandler):
    def get(self):
        userTable_name=self.request.get('userTable_name')

        data  = db.GqlQuery("SELECT * "
                                "FROM userTable "
                                "WHERE ANCESTOR IS :1 "
                                "ORDER BY date DESC LIMIT 10",
                                userTable_key(userTable_name))

        self.response.headers['Content-Type'] = 'text/plain'


        for user in data:
            blobURL = get_serving_url(user.imageblob.key(), size=None, crop=False)
            self.response.out.write(blobURL)

我正在使用GqlQuery来获取一组大文件(比如用户的图片文件),对于每个大文件,我需要找出它的BlobKey。根据我的观察,“user.imageblob.key()”似乎并不能返回这个blob的关键字……?

1 个回答

0

我搞明白了!原来我把“把图片作为二进制数据添加到数据存储”跟“把图片添加到二进制存储”搞混了。

BlobReferenceProperty是指向上传并存储在二进制存储中的对象,而BlobProperty则是直接把二进制数据存储在数据存储中。详细信息可以查看:如何在App Engine中使用get_serving_url?

所以,get_serving_url()user.imageblob.key()错误地指向了数据存储,而不是二进制存储。

关于如何将图片添加到二进制存储的例子,可以查看:http://code.google.com/appengine/docs/python/blobstore/overview.html

撰写回答