如何解决Golang使用特定路径将图像上传到GCS
我坚持使用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,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
有人知道吗?
解决方法
哦,我刚刚发现os.create()
也可以创建目录。
这是我的错
inputPath := "/shop_v1/shop_logo.jpeg"
os.create(inputPath)
应用程序将出错,找不到等等。
我只需要删除inputPath变量的第一个斜杠
inputPath := "shop_v1/shop_logo.jpeg"
os.create(inputPath)
现在可以了!。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。