【问题标题】:Google App Engine python cannot upload certain static filesGoogle App Engine python 无法上传某些静态文件
【发布时间】:2014-04-30 08:08:07
【问题描述】:

我刚刚注意到,当我将应用程序从本地计算机部署到 GAE 时,一些 .jpg 和 .js 没有上传。我之前查看这些文件没有问题,但昨天我突然注意到了这个变化。使用 Python 2.7 运行 GAE 1.9.3

至于.jpg文件,照片中的文件似乎没有上传。

我不知道为什么突然我无法为我的 web 应用上传并显示某些关键静态文件。

至于观察:
1-Localhost显示图片或运行.js没有问题
2-yaml 已在数周内完全没有改变
3-部署工作正常,直到上周。我尝试上传以前没有问题的旧代码现在也有同样的问题。
4-我在上传脚本期间看到很多 Could not guess mimetype for ...... 错误
5-默认情况下,我使用 Eclipse 和 PyDev+GAE+EGIT。但我尝试使用 GAELauncher,结果相同
6-仅基于照片的图像不上传;我看插图很好。在服务站点上,我得到:GET http://mysite.appspot.com/img/home-concept-item-1.jpg 404 (NOT FOUND) 错误。同样,只有少数无法通过(确切地说是六个)和两个 .js;其他都很好...
7-从上面看,很难相信问题是我造成的,但有些事情需要改变。

这是我的 yaml(同样,已经好几个星期没有更改并且之前运行良好):

application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes    

handlers:
- url: /img/favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico
- url: /css
  static_dir: css
- url: /js
  static_dir: js
- url: /vendor
  static_dir: vendor
- url: /img
  static_dir: img

- url: .*
  script: main.app

libraries:                                                                      
- name: jinja2                                                                  
  version: latest                                                               
- name: markupsafe                                                              
  version: latest           
- name: webapp2
  version: "2.5.2"

请指教。您的意见将不胜感激!

【问题讨论】:

  • 您需要提供更多信息。你怎么知道他们没有上传,你有什么证据?你确定你不能下载它们吗?您的 app.yaml 可能是原因,或者如果您期望图像发生变化,则缓存。
  • @TimHoffman 谢谢。您的建议已被采纳并更新了帖子。我看到 404 Not Found 错误,但仅发生在基于照片的图像和两个 .js
  • “无法猜测 mimetype”?该消息有助于查明。来自:link mime 类型:“如果指定,则此处理程序提供的所有文件都将使用指定的 MIME 类型提供服务。如果未指定,文件的 MIME 类型将从文件的文件扩展名派生。”所以,检查你的扩展。要强制 mime_type,您可以在 app.yaml 中的静态文件处理程序中声明它: - url: /js static_dir: js mime_type: "text/javascript"
  • @GAEfan 感谢您的意见。我尝试了您所建议的所有方法,但没有成功。我有三张并排的图片,但由于收到Failed to load resource: the server responded with a status of 404 (Not Found) 错误,其中一张仍然“丢失”。我很困惑,尤其是我们运行良好的旧代码现在在部署时遇到了同样的问题。

标签: google-app-engine


【解决方案1】:

此外,Push-to-Deploy 中存在一个错误,如果您在 app.yaml 中有任何静态文件重新映射,则静态文件会丢失。你在使用 git repo 和 ptd 吗?如果是这样,请尝试从命令行或 GAELauncher 进行部署。

转储你的缓存,检查 app.yaml 中的 skip_files

【讨论】:

  • 谢谢。有没有办法(命令)清除服务器上的所有内容并尝试重新上传?如果所有克隆都作为我的本地主机,我应该没有问题。另外,什么是最好的转储方式(以及在哪里)?
  • 通过浏览器偏好设置清除浏览器缓存,或在 Chrome 中使用隐身模式,或切换浏览器。在应用程序控制台中,您可以清除内存缓存,以防您有一些模板缓存到位。此外,应用引擎 URL 区分大小写。检查那个。部署时是否有任何日志消息?
【解决方案2】:

检查app.yaml 文件的skip_files: 选项。确保你没有像(*.j*) 这样过于贪婪的表达。

【讨论】:

  • 我的 yaml 看起来不错,我想。并不是所有的 .jpg 或 .js 都“丢失”了。只有几个。
【解决方案3】:

添加上传到 app.yaml 因为你需要点 *.js 可以是正则表达式,但你需要检查它。

查看您的代码以获取语法示例:

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

查看我的代码:

- url: /static/audio/(.*\.ogg)
  mime_type: application/ogg
  static_files: static/audio/\1
  upload: static/audio/(.*\.ogg)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2013-08-25
    • 2017-08-15
    相关资源
    最近更新 更多