如何从数据存储中选择,下载或显示单个条目。特别是如果这些条目包含BlobProperty。
答案 0 :(得分:0)
这完全取决于您当前存储在BlobProperty中的内容。由于它通常用于存储大小上限为1 MB的数据,因此我假设您将其存储为图像,甚至是某些文件,这些都在此限制之下。
很可能,您可能希望通过Web应用程序提供指向用户的链接以下载文档,或者如果它是图像,您可能希望自己在Web应用程序中呈现它(例如用户的头像什么的)。
答案 1 :(得分: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'),