Golang使用特定路径将图像上传到GCS

时间:2020-11-02 06:39:49

标签: image go google-cloud-platform google-cloud-storage google-cloud-sdk

我坚持使用Google Cloud Storage和os.create()

这是我的示例代码

func upload(w http.ResponseWriter, r *http.Request) {
     // some process request msg, decode base64 to image byte
    // create image file in current directory with os.create()
    // 
    path := os.create("shop_logo.jpeg")
    bucket := client.Bucket("myBucket")
    write := bucket.Object(path).NewWriter(ctx)
     
}

使用目录创建文件

func upload(w http.ResponseWriter, r *http.Request) {
     // some process request msg, decode base64 to image byte
    // create image file in current directory with os.create()
    // 
    path := os.create("home/../project/repo/shop_logo.jpeg") //absolute path
    bucket := client.Bucket("myBucket")
    write := bucket.Object(path).NewWriter(ctx)
     
}

它可以正常工作,例如mybucket/shop_logo.jpeg
但是我想组织诸如mybucket/shop_v1/shop_logo.jpeg
之类的存储桶路径 但是我使用了os.create()之类的os.create("shop_v1/shop_logo.jpeg)
它无法正常工作,看来此功能无法创建文件夹。
但是当我使用绝对路径时,它可以工作。像os.create("/home/project/shop_v1/shop_logo.jpeg)
问题是bucket.Object("path/to/image_file")是否需要文件路径。
因此,如果我使用绝对路径进行上传。
我的存储桶将是myBucket/home/project/shop_v1/shop_logo.jpeg

但是我期望的是mybucket/shop_v1/shop_logo.jpeg

有人知道吗?

1 个答案:

答案 0 :(得分:0)

哦,我刚刚发现os.create()也可以创建目录。

这是我的错

inputPath := "/shop_v1/shop_logo.jpeg"
os.create(inputPath)

应用程序将出错,找不到等等。
我只需要删除inputPath变量的第一个斜杠

inputPath := "shop_v1/shop_logo.jpeg"
os.create(inputPath)

现在可以了!。