为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 GCP 云功能中加载本地资产?

如何在 GCP 云功能中加载本地资产?

Go
江户川乱折腾 2023-06-01 17:55:49
我正在 Golang 中构建一个微型 GCP 云函数,它在通过 HTTP 调用时返回生成的 PNG 文件。我在 Google Cloud Console 中通过 ZIP-Upload 部署了我的代码。目前它被正确调用并且代码被编译等。但是在我的代码中我必须加载几个本地文件 - 一个字体和一个 .png 图像。我将它们捆绑在我上传的 ZIP 中,这些文件在 GCP 的源视图中可见。所有文件(图像、字体和 go 文件)都在同一目录中。调用云函数时,日志说明如下:2019/01/21 14:59:31 open /english.png: no such file or directory我试图改变我构建文件路径的方式。我已经静态地使用了 /german.png,多次尝试动态构建路径。我不是 100% 确定这是否是要走的路,但这是我对“无服务器”的第一次实验,我愿意以“正确”的方式完成它。import "github.com/fogleman/gg"func main() {    ex, err := os.Executable()    if err != nil {        panic(err)    }    executableDir := filepath.Dir(ex)    img, err :=gg.LoadPNG(path.Join(executableDir, "./english.png"))    if err != nil {        log.Fatal(err)    }}目前我所做的任何尝试都找不到该文件。也许图像“部署”到的路径与我尝试过的路径不同——我没有在文档中找到任何关于此的注释。我显然希望它能正确加载。
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

根据文档对于 Go 1.13 ,截至今天(2020 年 7 月),源代码位于目录中./serverless_function_source_code

一个很好的参考是buildpack。


查看完整回答
反对 回复 2023-06-01
?
桃花长相依

TA贡献1860条经验 获得超8个赞

我创建了具有以下结构的 http 函数:


api

|--test.txt

|--api.go

并编写了简单的函数来回复文件内容:


package api


import (

    "io/ioutil"

    "net/http"

)


// FileTest func

func FileTest(w http.ResponseWriter, r *http.Request) {

    content, err := ioutil.ReadFile("./test.txt")

    if err != nil {

        w.WriteHeader(http.StatusInternalServerError)

        w.Write([]byte(err.Error()))

        return

    }


    w.Write(content)

}

它返回文件内容没有任何问题。

因此,在您的情况下,我会尝试将路径更改为gg.LoadPNG("./english.png")


查看完整回答
反对 回复 2023-06-01
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

./serverless_function_source_code将 go113 运行时与 vendoring 一起使用对我不起作用。我想在供应商目录中找到一个文件。


我的文件结构是:


myfn

|- main.go

|- go.mod

|- .gcloudignore

我的部署步骤是:


cd myfn

go mod vendor

gcloud functions deploy MyFunction --runtime go113 --set-env-vars "PATH_FILES=./src/myfn/vendor/static"

我通过部署一个函数发现了这一点,该函数列出了一定深度的所有文件,开始时"."没有看到serverless_function_source_code目录。但是有src/myfn。


查看完整回答
反对 回复 2023-06-01
  • 3 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信