在 google 云上托管 api 文件路径问题
Hosted api on google cloud issue with file paths
我在 main.go 文件的根目录中有一个图像文件。当 golang api 托管在 google 云上时,我如何获得提供文件的路径(当它托管在 google 云上时,似乎所有文件都被弄乱了)。这是我现在使用的代码:
func ServeImage(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
ex, err := os.Executable()
if err != nil {
panic(err)
}
executableDir := filepath.Dir(ex)
//TODO error
file, err := os.Open(path.Join(executableDir, "/"+params["name"]))
if (err != nil) {
http.Error(w, err.Error(), http.StatusBadRequest)
fmt.Println(err)
}
defer file.Close()
http.ServeContent(w, r, "image", time.Now(), file)
}
我得到的错误是:
open /layers/google.go.build/bin/_DSC7451.jpeg: no such file or directory
seeker can't seek
如果您使用的是应用引擎,那么您实际上无法访问文件系统。 https://cloud.google.com/appengine/docs/standard/runtimes
您应该使用云存储来写入和读取文件。这将使您的文件可以在任何给定时间 运行 的所有服务实例中访问。
我在 main.go 文件的根目录中有一个图像文件。当 golang api 托管在 google 云上时,我如何获得提供文件的路径(当它托管在 google 云上时,似乎所有文件都被弄乱了)。这是我现在使用的代码:
func ServeImage(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
ex, err := os.Executable()
if err != nil {
panic(err)
}
executableDir := filepath.Dir(ex)
//TODO error
file, err := os.Open(path.Join(executableDir, "/"+params["name"]))
if (err != nil) {
http.Error(w, err.Error(), http.StatusBadRequest)
fmt.Println(err)
}
defer file.Close()
http.ServeContent(w, r, "image", time.Now(), file)
}
我得到的错误是:
open /layers/google.go.build/bin/_DSC7451.jpeg: no such file or directory
seeker can't seek
如果您使用的是应用引擎,那么您实际上无法访问文件系统。 https://cloud.google.com/appengine/docs/standard/runtimes
您应该使用云存储来写入和读取文件。这将使您的文件可以在任何给定时间 运行 的所有服务实例中访问。