如何从 Firebase 存储中获取图像链接

时间:2021-01-25 11:48:57

标签: firebase go firebase-storage

我已将图片上传到 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 存储请求文件的错误方式?

1 个答案:

答案 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请求来请求它们。