0

我正在尝试获取图像的 URL(GAE 的 blob 字段):

class Product(db.Model):
  name = db.StringProperty()
  price = db.FloatProperty()
  added = db.DateTimeProperty(auto_now_add=True)
  image = db.BlobProperty(default=None)


url = images.get_serving_url(movie.image)

服务图像处理程序:

def result(request):
  product = Product()
  product.name = "halva"
  url = 'http://echealthinsurance.com/wp-content/uploads/2009/11/minnesota.jpg'
  product.image = db.Blob(urlfetch.Fetch(url).content)
  product.put()

  template = loader.get_template("result.html")
  context = RequestContext(request, 
                         {
        "result" : u"Add"})

  return HttpResponse(template.render(context))

但我得到除了:

UnicodeDecodeError:

当尝试忽略此异常(这是 Python 2.7 中的错误)时,我在其他地方遇到异常。

之后我尝试将图像编码为'latin-1'('utf-8'不起作用):

 enc_img = movie.image.decode("latin-1")
 url = images.get_serving_url(enc_img)

结果: url 有一个类似于二进制文件的视图:

 "ÝêÓ9>èýÑNëCf Äàr0xã³3Ï^µ7±\íQÀ¡>.....ÕÝ£°Ëÿ"I¢¶L`ù¥ºûMþÒ¸ÿ+ÿL¢ï£ÿÙ' alt="" />"

如何获取 url 以在模板中显示动态图像?

4

2 回答 2

1

你在这里混淆了两个不同的东西。

如果您将图像存储在 db.BlobProperty 中(代码未显示您正在执行此操作,但您拥有的 Schema 正在使用 db.BlobProperty),这意味着您的处理程序必须提供图像。

但是,您正在使用 image.get_serving_url,它需要一个 BlobKey 实例,该实例来自将图像存储在 BlobStore https://developers.google.com/appengine/docs/python/blobstore/blobkeyclass 中,这与您完全不同是做。

您需要确定您想要做什么,将图像(最大大小 1MB)存储在 BlobProperty 中并提供可以提供图像的处理程序,或者将其上传到 BlobStore 并从那里提供

于 2012-08-20T23:13:12.563 回答
0

images.get_serving_url需要一个 BlobKey。尝试:

enc_img = movie.image
url = images.get_serving_url(enc_img.key())
于 2012-08-20T13:10:53.417 回答