0

Image(GAEのblobフィールド)のURLを取得しようとしています:

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 のバグ) を無視しようとすると、別の場所で例外が発生します。

その後、Image を '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

ここで2つの異なることを混同しています。

画像を db.BlobProperty に保存している場合 (コードはこれを行っていることを示していませんが、スキーマは db.BlobProperty を使用しています)、これはハンドラーが画像を提供する必要があることを意味します。

ただし、image.get_serving_url を使用しています。これは、イメージを BlobStore https://developers.google.com/appengine/docs/python/blobstore/blobkeyclassに格納することで得られる BlobKey インスタンスを使用します。これは、あなたが作成した ものとはまったく異なります。やっている。

やりたいことを解決し、BlobProperty に画像 (最大サイズ 1MB) を保存し、画像を提供できるハンドラーを提供するか、BlobStore にアップロードしてそこから提供する必要があります。

于 2012-08-20T23:13:12.563 に答える
0

images.get_serving_urlBlobKey を受け取ります。試す:

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