os.Open 在 AppEngine 上使用 Go

我最近开始使用 AppEngine,但在打开文件时遇到问题。这是我正在使用的代码:


if _, err := os.Open("/pizza.webp"); err != nil {

    printError(err.Error())

}

这给了我错误: open /pizza.webp: operation not permitted


我试过使用 .png 并得到相同的结果。我也试过没有斜线和斜线前有一个点,两者都导致了错误,no such file or directory所以我猜我的路径是正确的,但由于某种原因我没有访问它的权限,也许我有什么东西需要写在 app.yaml 中吗?现在 app.yaml 看起来像这样:


application: pizzarobot-telegram

version: 1

runtime: go

api_version: go1


handlers:

- url: /.*

  script: _go_app

这是带有我的应用程序 ID 的默认 app.yaml。我试过通过 app.yaml 设置静态目录,但这也不起作用,我读过 AppEngine 在这种情况下将您的静态文件与代码分开存储。


我对 Go 也很陌生,所以我可能做错了,可能不是 AppEngine 问题,但我过去使用 os.Open 没有 AppEngine 并且有效,所以我不知道我错过了什么这里。


人到中年有点甜
浏览 190回答 1
1回答

四季花海

它应该没有斜线工作。文件路径相对于您的项目根目录(您所在的app.yaml位置)。我只是用 3 个文件试过这个:main.goapp.yamlpizza.txtmain.go:package mainimport (    "io"    "net/http"    "os")func init() {    http.HandleFunc("/pizza.txt", func(res http.ResponseWriter, req *http.Request) {        f, err := os.Open("pizza.txt")        if err != nil {            http.Error(res, err.Error(), 500)            return        }        defer f.Close()        io.Copy(res, f)    })}pizza.txt:Totally Works!app.yaml:application: astute-curve-100822version: 1runtime: goapi_version: go1handlers:- url: /.*  script: _go_app它在本地和应用引擎上运行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go