我已将图片上传到 firebase 存储,并将规则设置为全部公开。
我希望获得指向不同文件夹中图像的链接,但无法弄清楚如何在 Go 中进行。有大量关于在 Java/Python/JavaScript 中获取图像的教程,但不幸的是,Go 中的教程并不多。
这是我目前的代码:
bucketName := "<bucket-id>.appspot.com"
ctx := context.Background()
client, err := storage.NewClient(ctx, option.WithoutAuthentication())
if err != nil {
fmt.Println(err)
return nil, err
}
bucket := client.Bucket(bucketName)
在这个存储桶中,我有一些目录,假设我想从 dirOne
获取图像。我该如何从这里开始,或者这是从 Firebase 存储请求文件的错误方式?
答案 0 :(得分:2)
当您创建 firebase 项目时,GCP 项目中将自动为该 firebase 项目添加一个存储桶。因此,您可以使用 gcs go package 与您的 Firebase 文件进行交互。
列出文件夹的文件
it := client.Bucket(bucket).Objects(ctx, &storage.Query{
Prefix: prefix,
Delimiter: delim,
})
for {
attrs, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
return fmt.Errorf("Bucket(%q).Objects(): %v", bucket, err)
}
fmt.Fprintln(w, attrs.Name)
}
return nil
假设您要检索图像文件夹中的所有文件。前缀应该是 /images 和 delim /。
你要把这些文件发回前端吗?如果是这种情况,请阅读以下建议
如果您需要将文件发送到前端,当前的方法效率低下,因为文件将通过您的后端,并且这在性能方面不可扩展。您可以将文件相对 url 存储到 firebase 数据库并将它们发送到前端。之后前端可以直接使用http请求来请求它们。