gpt4 book ai didi

google-app-engine - os.Open 在 AppEngine 上使用 Go

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:52 24 4
gpt4 key购买 nike

我最近开始尝试使用 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 的问题,但我过去在没有 AppEngine 的情况下使用过 os.Open 并且有效,所以我不知道我在做什么这里不见了。

最佳答案

它应该没有斜线。文件路径相对于您的项目根目录(您的 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

它在本地和 App Engine 上运行。

关于google-app-engine - os.Open 在 AppEngine 上使用 Go,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com