2011-01-21 90 views

回答

2

在这种情况下,blob是一个很好的图像。只需使用images.get_serving_url(blob_key),你很高兴。我已经使用了这个功能,相信我,这对于提供图片来说非常棒。只需附加=sxx即可,其中xx是您想要的像素大小。它会自动调整图像大小并提供服务。

如果blob不是一个图像,那么你是一个简单的出路运气不好的人。也许使用BlobReader来进行字符串表示并输出它?

如果它不是图像或文本,但是,您可能想要写入HTML?

+0

这是如何从处理程序返回?如果我返回包含在响应中的服务URL或URL,图像会中断。如果我在src属性中对“/ _ah/img/”进行了硬编码,它就可以工作,但只能在开发中使用。 – 2011-04-17 21:45:43

1

没有用于显示任意数据的内置模板标签。我可以想到两种方法:

  1. 为服务头像写入请求处理程序作为图像。根据您的示例,请求处理程序只需查找问候语即可获取图像数据,发送适当的Content-Type: image/jpeg(或image/png或其他)标题,然后将blob数据写入响应流。

    然后,在你的模板,你会像这样显示图像:

    <img src="/show-avatar/{{ greeting.key().id() }}"> 
    
  2. 编写自定义模板标签/模板过滤器,是以BLOB数据,并生成一个适当的data URL,这将编码图像数据直接在您生成的HTML文档中。

    然后,在你的模板,你会展示形象是这样的:

    <img src="{{ greeting.avatar|dataurl }}"> 
    

    这将导致沿着这些线路中的模板输出:

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />