与 Google App Engine 一起上传图片
Posted
技术标签:
【中文标题】与 Google App Engine 一起上传图片【英文标题】:Uploading images along with Google App Engine 【发布时间】:2010-09-14 17:08:20 【问题描述】:我正在开发一个 Google App Engine 项目。
我的应用在本地运行并且看起来正确,但是当我尝试在图像目录中上传图像时,它们没有显示在 apppot 中。
作为一个小故障排除,我将一个 html 页面放在“/images/page2.html”中,我可以在 apppot 中加载该页面,但我的页面不显示我的图像。所以,这不是我的路径的问题。
作为另一个健全性检查,我还上传了一个样式表目录,其中包含 .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
【问题讨论】:
您好,您的问题解决了吗?介意分享一下你是如何解决的吗? 【参考方案1】:我正在使用 Java 版本的 App 引擎,我遇到了服务器无法提供静态图像的类似问题。
最终起作用的是在我的情况下更改 AppEngine 配置文件“appengine-web.xml”以包含
<static-files>
<include path="**.*"/>
<include path="/images/**.*" />
</static-files>
我的图片位于 /images 目录中,而 HTML 和 CSS 位于 . WEB-INF级别的目录
【讨论】:
【参考方案2】:你必须为图片和css文件等静态内容配置app.yaml
例子:
url: /(.*\.(gif|png|jpg))
static_files: static/\1
upload: static/(.*\.(gif|png|jpg))
欲了解更多信息,请查看: http://code.google.com/appengine/docs/configuringanapp.html
【讨论】:
【参考方案3】:<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中的main函数:
application = webapp.WSGIApplication(('/image', GetImage), debug=True)
玩得开心
【讨论】:
你的“2”是完全写的还是被剪掉了?看起来你正在尝试制作一个通用的 GetImage 类,但是你在哪里告诉它实际的图像?如果我想在一个地方显示“image1.jpg”,而在另一个地方显示“image2.jpg”怎么办。什么是 html 调用?【参考方案4】:@jamtoday 前面的斜线没有什么不同,但它确实让我开始弄清楚每个应用程序需要被告知我的目录结构。
所以,我没有什么非常确定的补充,但我想跟进,因为我得到了它的工作,但我没有在我得到它之后探索所有的问题。
一项有帮助的更改是停止从 HwlloWorld/src/ 目录工作并开始在 HelloWorld/ 目录中工作。似乎 dev_appserver 获取了所有依赖项,但远程服务器没有。本质上,我的本地链接的相对路径与上传后链接的相对路径不匹配。
我还意识到 dev-appserver 依赖于 .yaml 文件以及 appcfg 脚本。那是。 . .如果您在项目中添加一个目录,然后尝试链接到该目录中的文件,则需要将该目录添加到 .yaml 文件中,然后重新启动 dev-appserver 以进行处理。
因此,如果您为 .yaml 文件提供正确的信息,则可能有一些方法可以处理我最初尝试做的事情,但更改为本地不同的目录结构会为我处理它。
【讨论】:
【参考方案5】:我敢打赌,您的问题是您使用的是 Windows。
如果是这种情况,我相信您的 static_dir 值需要前面的斜线。
【讨论】:
现在很有趣——我刚开始工作,现在我想回家试试这个。我会回来查看(但可能是星期一)更新。顺便说一句,您所说的内容是否有我可能在某处忽略的文档?以上是关于与 Google App Engine 一起上传图片的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Django 的标记模板标签与 Google App Engine WebApp 框架一起使用
与 Google App Engine 和 Flask 一起使用时,Angular 路由不起作用