我将数据保存在数据库中作为blob:
class MyClass(db.Model):
icon=db.BlobProperty()
现在,我想将blob发送到我的HTML,如下所示:
假设我有myClass
作为MyClass
result = """<div img_attr=%s> Bla Bla </div>""" % (myClass.icon)
有些怎么做不起作用。你有什么想法吗?
答案 0 :(得分:1)
您不能只将原始图像数据转储到您的html页面。你需要分两部分来做这件事:
在您的HTML 中,您需要引用图片文件:
result = "<div>"
"<img src='{0}' />"
"</div>"
.format(MYSITE + MYIMAGEDIR + myClass.name)
您的浏览器会读取html页面,发现您要包含图片,然后查找要包含的图片文件 - 因此它会向您的网站询问类似http://www.myexample.com/images/icon01.jpg
的内容现在,您可以单独使用图片内容回复此第二个请求,如@anand所示。
答案 1 :(得分:0)
您的代码表明您正在使用Django处理Google应用程序引擎。
您只需要查看视图中的图像并将其作为http响应返回。
image = myclassObject.icon
response = HttpResponse(image)
response ['Content-Type'] ='image / jpg'
返回回复
答案 2 :(得分:0)
存储在数据存储中并由appengine返回的db.BlobProperty值不是blob的实际字节,而是用于引用它的BlobKey。有两种方法可以使用该密钥。您可以创建一个BlobReader来将blob的blob字节从BlobStore加载到您的应用程序中,或者您可以使用ServeHandler.send_blob制作响应以将这些字节传输到客户端。
在Django中执行第二个操作有点令人头疼,因为ServeHandler并不能很好地适应Django请求处理堆栈。这是一个可以帮助您的视图而不会有太多麻烦:
def get_image_data(request, key, filename):
"serve original uploaded image"
# verify the users' ability to get the requested image
key = urllib.unquote(key)
img = _load_metadata(request, key)
blob = img.data;
blobkey = blob.key()
# and tell google to serve it
response = http.HttpResponse(
content='',
content_type=blob.content_type)
response['X-AppEngine-BlobKey'] = str(blobkey)
return response