2011-12-13 44 views
1

如何从blob商店返回blob密钥?并随后返回图片网址?blobstore的blobkey谷歌应用程序引擎python

示例代码:

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返回一组斑点(即user.imageblob)并为每个斑点我需要确定的BlobKey。从我可以告诉,“user.imageblob.key()”不会返回blobkey ...?

+0

这是什么回报? – proppy

+0

它返回:“ValidateString if len(value.encode('utf-8'))> max_len: UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xff:序号不在范围内(128)” – Andrew

+0

' user.imageblob.key()'_is_ blobkey,尽管它是一种低效率的方式。请在您的问题中包含您尝试的实际代码以及完整的堆栈跟踪。 –

回答

0

解决了它!事实证明,我很困惑的是“将图像作为一个blob添加到数据存储区”,而不是将图像添加到blobstore。

a BlobReferenceProperty references an object uploaded and stored in the blobstore while a BlobProperty stores blob data directly in the datastore. see: How to use get_serving_url in appengine? .

因此,get_serving_url()user.imageblob.key()被错误地指向数据存储区,而不是至Blobstore。

对于将图像添加到Blob存储区看到的例子:http://code.google.com/appengine/docs/python/blobstore/overview.html