2

PythonGAEで画像をアップロードして表示するのに苦労しています。

これが私がしたことです。1. app.yamlファイルに、次を追加しました。

handlers:

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /(.*\.(gif|png|jpg))
  static_files: /\1
  upload: (.*\.(gif|png|jpg))

- url: .*
  script: main.app
  1. 次に、下に置きます:

def Character(db.Model):
   avatar = db.BlobProperty()

私のハンドラーの下で:

if avatar:
  character_info.avatar = db.Blob(images.resize(avatar, 240,360))
   character_key = character_info.put()

gae adminデータビューアでバイナリ入力を確認できますが、それを呼び出すためにどのように機能するか正確にはわかりません。次に、charactersオブジェクトをPageHandlerに渡し、forループを呼び出して各アバターを取得しました。

{% for character in characters %}
#{{another html page is render here}}
{% endfor %}

これらを試しましたが、どれも機能しません。

<img src="/images?img_id={{character.key()}}"></img>
<img src="/images/header.jpg"></img>
<img src="/avatar?avatar_id={{character.key()}}"></img>

だから私の質問は:

  1. 「/images」(これはフォルダですか?)または「img_id」が使用する正しい構文であるかどうかをどのように判断しますか?

  2. ローカルホストにアップロードされた画像が表示されません、それは正しいですか?

  3. のようなフォルダから直接画像を呼び出すこと<img src="/images/header.jpg"></img>は機能しません...(phpでは機能します...)

よろしくお願いします、どんな助けでもありがたいです!

4

2 に答える 2

3

静的ファイルは、アプリケーションではなくインフラストラクチャによって提供されます。ハンドラー定義にエラーがあるように見えます...次のようになります(注:先頭がない/アップロード:セクションにあります)

- url: /(.*\.(gif$|png$|jpg$))
  static_files: /\1
  upload: (.*\.(gif$|png$|jpg$))

その場合、gif、png、またはjpgで終わるURLは、アプリケーションハンドラーではなく、アプリエンジンインフラストラクチャによってサーバーになります。

于 2012-12-31T02:10:02.047 に答える
0

さて、私が間違ったことは、画像ハンドラーを追加しなかったことであることがわかりました。

それで

class ImageHandler(Handler):
    def get(self):
        character = db.get(self.request.get('img_id'))
        if character.avatar:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(character.avatar)
        else:
            self.response.out.write("No image")

これで私の問題は解決します。

于 2013-01-02T23:31:27.757 に答える