2014-01-24 72 views
0

我該如何去選擇和下載或顯示數據存儲中的單個條目。特別是如果這些條目包含BlobProperty。從Google App Engine下載或顯示BlobProperties

+0

什麼是在BLOB字段?它是二進制數據嗎,它是一個圖像,是一個文件下載等?沒有更多的信息,你的問題很難回答。 – iandouglas

+0

對不起,我是青蛙。我正在存儲pdf。他們應該很小 –

回答

0

它完全取決於你目前在BlobProperty中存儲的內容。由於它通常用於存儲大小上限爲1 MB的數據,因此我假設您正在將其存儲爲圖像或甚至某些文件,而這些文件都低於此限制。

很可能,您可能希望通過您的Web應用程序提供一個指向用戶的鏈接,以下載文檔,或者如果它是圖像,您可能希望自己在Web應用程序中呈現它(例如用戶的頭像或其他)。

0

這是我的代碼,下載存儲在數據存儲中的blob。首先是HTML:

<a href="/dynfile/example/Disclaimer.pdf">Disclaimer</a> 

我使用webapp2和NDB。服務器代碼。

class DynLoad(webapp2.RequestHandler): 

    def get(self, parent, cid): 

     dyn = ndb.Key('Dynamic', cid, parent=ndb.Key('Examples', parent)).get()          
      if dyn: 

       self.response.headers[str('ETag')] = str(dyn.modified) 
       if 'If-None-Match' in self.request.headers: 
       etags = [x.strip() 
         for x in self.request.headers[str('If-None-Match')].split(',')] 
       if str(dyn.modified) in etags: 
        self.response.set_status(304) 
        return 

      content_type = mimetypes.guess_type(cid)[0] 
      self.response.headers[str('Content-Type')] = str(content_type) 
      self.response.headers[str('Content-Disposition')] = str('attachment; filename=%s' % cid) 
       self.response.out.write(dyn.blob) 
     else: 
      logging.error('Blob NOT FOUND for : %s parent : %s' % (cid, parent)) 

的webapp2的路線:

webapp2.Route(r'/dynload/<parent:[^/]+>/<cid:[^/]+>', handler=DynLoad, name='dynload'),