猿问

如何将文件上传到 Google Cloud Storage Bucket 子目录

我想使用 Go 将文件上传到谷歌云存储桶子目录。我找到的唯一参考代码是link

wc := client.Bucket(bucket).Object(object).NewWriter(ctx)

object是您的文件名的字符串,但不允许使用文件路径。当我使用像/path/filename. 它仅在您使用filename.

连接:无法分配请求的地址

以前我使用 node.js,它工作正常。

await bucket.upload(filePath, { destination: `path/filename`, resumable:false });

我怎样才能用 Go 实现呢?


胡说叔叔
浏览 229回答 2
2回答

弑天下

您无法将文件上传到 Google Cloud Storage Bucket 子目录,因为SubdirectoryGCS 上不存在 的概念。Google Cloud Storage 对象是一个平面命名空间。因此,在 GCS 中,您只有存储桶和对象。在这里,您可以找到有关 gsutil 如何提供分层文件树错觉的更多详细信息:

婷婷同学_

继续 Node 示例,存储桶始终是顶级存储桶名称。子目录成为“文件”的一部分。GCP 将子目录 + 文件视为一个对象。是的,这是违反直觉的。const bucketName = 'top-level-bucket-name';const subBucketName = 'sub_level/another_sub_level/';// Cloud Function uses /tmp not ./tmpconst directory = './tmp'; const fileName = 'foo.txt';storage.bucket(bucketName).upload(`${directory}/${fileName}`, { destination: subBucketName + fileName});我遇到了子目录中的连字符不起作用的问题,这就是为什么有下划线。
随时随地看视频慕课网APP

相关分类

Go
我要回答