2

很难在 python gae 中上传和显示图像。

这就是我所做的。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 管理数据查看器中看到一个二进制输入,但不确定它是如何调用它的。然后,我将字符对象传递给 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 回答