答案 0 :(得分:2)
在这种情况下,blob是一个图像,这很棒。只需使用images.get_serving_url(blob_key)
就可以了。我已经使用过这个功能了,相信我,它对于提供图像非常棒。只需将=sxx
附加到xx
是您想要的像素大小的网址。它会自动调整图像大小并为其提供服务。
如果斑点不是图像,那么你运气不好,这是一个简单的方法。也许使用BlobReader
来创建一个字符串表示并输出它?
如果它不是图像或文本,那么您可能想要写入HTML?
答案 1 :(得分:1)
没有用于显示任意数据的内置模板标记。我可以想到两种方法:
为服务头像编写请求处理程序作为图像。根据您的示例,请求处理程序只需要查找问候语以获取图像数据,发送适当的Content-Type: image/jpeg
(或image/png
或其他)标头,然后将blob数据写入响应流
然后,在您的模板中,您将显示如下图像:
<img src="/show-avatar/{{ greeting.key().id() }}">
编写一个自定义模板标记/模板过滤器,用于获取blob数据并生成适当的data URL,它会直接在您生成的HTML文档中对图像数据进行编码。
然后,在您的模板中,您将显示如下图像:
<img src="{{ greeting.avatar|dataurl }}">
会导致模板中这些行的输出:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />