与Google App Engine一起上传图像

时间:2020-03-06 15:00:29  来源:igfitidea点击:

我正在研究Google App Engine项目。

我的应用程序正在运行并且在本地看起来正确,但是当我尝试在图像目录中上传图像时,它们并没有显示在appspot上。

作为一些疑难解答,我将HTML页面放置在" /images/page2.html"中,并且可以在appspot加载该页面,但是我的页面不显示我的图像。因此,这不是我的问题。

作为另一个健全性检查,我还上载了带有.css代码的样式表目录,并且正在正确读取该目录。

我怀疑问题出在我的app.yaml文件中。

有任何想法吗?

我不想在这里粘贴所有代码,但是这里是一些关键行。前两个工作正常。第三种不起作用:

<link type="text/css" rel="stylesheet" href="/stylesheets/style.css" />
<a href="/images/Page2.html">Page 2</a>
<img src="/images/img.gif">

这是我的app.yaml文件

application: myApp
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /images
  static_dir: images

- url: /.*
  script: helloworld.py

解决方案

我敢打赌,问题是我们使用的是Windows。

如果是这样,我相信static_dir值需要一个斜杠。

@jamtoday前面的斜杠没什么区别,但是它确实使我开始弄清楚每个应用程序需要告诉我什么目录结构。

因此,我没有什么要说的很确定,但是我想跟进,因为我已经开始工作了,但是在开始工作后我并没有探讨所有问题。

一项有用的更改是从HwlloWorld / src /目录停止工作,并开始在HelloWorld /目录中工作。似乎dev_appserver拾取了所有依赖项,但远程服务器却没有。从本质上讲,我的本地链接的相对路径与上传后的链接的相对路径不匹配。

我还意识到dev-appserver依赖于.yaml文件以及appcfg脚本。那是。 。 .if如果将目录添加到项目中,然后尝试链接到该目录中的文件,则需要将该目录添加到.yaml文件中,然后重新启动dev-appserver进行选择。

因此,如果我们为.yaml文件提供了正确的信息,则可能有多种方法可以处理我最初试图做的事情,但是更改为本地的其他目录结构可以为我处理。

<img src="/images/img.gif">

该行无法显示图像。
试试这个:

1-创建一个类来处理"图像请求"

class GetImage(webapp.RequestHandler):
      def get(self):
       self.response.headers['Content-Type'] = 'image/jpg'
       self.response.out.write(image_object)

2-在page.html中:

<img src="/image"

3-在code.py的主要功能处:

application = webapp.WSGIApplication(('/image', GetImage), debug=True)

玩得开心

我们必须为静态内容(例如图像和CSS文件)配置app.yaml

例子:

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

有关更多信息,请查看:
http://code.google.com/appengine/docs/configuringanapp.html

我正在使用Java版本的App Engine,并且由于服务器无法提供静态图片,我遇到了类似的问题。

最终有效的方法是更改​​AppEngine配置文件" appengine-web.xml"以包含

<static-files>
<include path="**.*"/>
    <include path="/images/**.*" />
</static-files>

我的图片在/ images目录中,HTML和CSS在中。 WEB-INF级别的目录