2

blob プロパティとしてデータストアに画像を追加します。将来 GAE を使い続けるかどうかわからないので、BlobStore を使用したくありません。問題は、画像が見えないことです。代わりに「壊れたアイコン」が表示されます。

画像の保存方法はこちら

app = Applications()
image = str(self.request.get("image"))
app.img = db.Blob(image)
app.put()

img は db.BlobProperty() です

これが私が作った画像提供クラスです:

class ApplicationImageHandler(BaseHandler):
    def get(self):
        sURL = self.request.url.split("/")
        app = Applications.get_by_id(long(sURL[-1]))
        self.response.headers['Content-Type'] = 'image/jpeg'
        self.response.out.write(app.img)

呼び出したときのページは次のとおりです。http://localhost:9082/applications/6310509548666880

そして、これが私がそれを呼び出す方法です:<img src="/images/{{app.key().id()}}">

「アプリ」は、html でレンダリングしたときのデータベースのエンティティ全体です。

リンクをコピーしてブラウザに貼り付けると、同じ「壊れたアイコン」が表示されます。

編集:ログに、画像にコード 200 があることがわかりました。だから、私は今もっと混乱しています:P

INFO     2013-06-01 15:18:27,650 server.py:585] default: "GET /images/4762397176758272 HTTP/1.1" 200 10

画像を取得するために使用する html フォームの一部を次に示します。

<span>
  <input type="file" name="image">
</span>
4

1 に答える 1

1

まず、ブラウザから直接画像をリクエストして、正しく表示されるかどうかを確認してください。

http://localhost:9082/images/4762397176758272

それがうまくいかない場合は、server.py:585 が get() メソッドにあると仮定して ApplicationImageHandler に問題があるか、画像のアップロード プロセスに問題があります。画像/jpegでよろしいですか?フォームに含めenctype="multipart/form-data"ましたか?

また、Django または Jinja テンプレートを使用していますか? Django を使用している場合{{app.key().id()}}は、間違っています{{app.key.id}}。代わりに使用する必要があります。

于 2013-06-01T19:37:22.243 に答える