我最近开始使用 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-telegramversion: 1runtime: goapi_version: go1handlers:- url: /.* script: _go_app这是带有我的应用程序 ID 的默认 app.yaml。我试过通过 app.yaml 设置静态目录,但这也不起作用,我读过 AppEngine 在这种情况下将您的静态文件与代码分开存储。我对 Go 也很陌生,所以我可能做错了,可能不是 AppEngine 问题,但我过去使用 os.Open 没有 AppEngine 并且有效,所以我不知道我错过了什么这里。
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
它应该没有斜线工作。文件路径相对于您的项目根目录(您所在的app.yaml位置)。
我只是用 3 个文件试过这个:
main.go
app.yaml
pizza.txt
main.go:
package main
import (
"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-100822
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
它在本地和应用引擎上运行。
- 1 回答
- 0 关注
- 189 浏览
添加回答
举报
0/150
提交
取消