猿问

GAE:如何上传文件以供应用程序访问?

我的HTML文件静态规则仍然与模板匹配,即使它们位于子目录中也是如此。将规则更改为不再匹配之后,应用程序可以访问文件。


我正在创建一个Google AppEngine应用程序。我正在使用Go语言,但不确定是否相关。我想将模板与单独的模板文件一起使用。因此,应用程序必须读取模板文件。在本地这可行,但是将应用程序上载到GAE后,调用template.ParseFiles()时出现“没有这样的文件或目录”的情况。


所以我在想,我必须以某种方式指出模板文件是应用程序文件,以便它们以正确的方式上载。我以为我的模板文件可能是作为静态文件上传的,因此在我的app.yaml


- url: /(.*\.html)

  static_files: \1

  upload: .*\.html

所以我将它们移到了自己的目录中。但这并没有改变。我尝试在app.yaml中为我的脚本规则添加上载指令,如下所示:


- url: /.*

  script: _go_app

  upload: templates/.*

但这似乎是不允许的。那么谁能告诉我如何从我的GAE应用程序访问模板文件(或任何数据文件)?


12345678_0001
浏览 159回答 3
3回答

万千封印

项目目录中的所有文件都会自动上传。如果您的应用需要访问它们(在使用模板时就是这种情况),则不能将其标记为静态。这就是第一个解决方案失败的原因。第二次尝试不起作用,因为上载不是URL描述的成员。在您的情况下,只需部署您的应用程序,文件就会自动上传并可供您的应用程序使用(您可能需要获取项目的基本路径以构建模板的完整路径)。

忽然笑

假设文件不在static_dir或static_files目录中,则文件将自动上传。请参阅App Engine文档中的“跳过文件”部分。App Engine将此类目录和文件视为静态资源,并且静态资源与应用程序分开提供。通常无法从应用程序代码访问静态资源。如果必须将模板与其他静态资源放在同一目录中,则可以使用该application_readable设置使这些资源也可供您的应用访问。但是请注意,您可以将模板放置在应用程序中未映射到静态资源路径的位置。那可能是正确的事情。
随时随地看视频慕课网APP

相关分类

Go
我要回答