![]() |
1
155
您需要使用 getSignedURL 通过 @google-cloud/storage NPM模块。 例子:
你需要初始化
:现在可以通过Firebase Admin SDK访问云存储SDK acts as a wrapper
|
![]() |
2
101
然后打电话给
关键是这里有一个
非常感谢@martemorphosis |
![]() |
3
96
这个答案将总结在将文件上传到Google/Firebase云存储时获取下载URL的选项。有三种类型的下载URL:
有三种方法可以获得令牌下载URL。其他两个下载URL只有一种方法可以获得它们。 从Firebase存储控制台
下载URL如下所示:
前端的getDownloadURL()
这个
documentation
告诉我们使用
用于临时下载URL的getSignedUrl() getSignedUrl() 易于从节点后端或Google云功能使用:
签名的下载URL如下所示:
签名的URL具有过期日期和长签名。命令行的文档 gsutil signurl -d
我要大声说
getSignedUrl
千万不要说你的签名网址将在一周内过期。文档代码
公开您的文件 您可以将文件的权限设置为public read,如中所述 documentation
任何人都可以使用标准路径下载您的文件:
另一种公开文件的方法是使用 makePublic()
一个有趣的选择是使用
Access Control Lists
. 您可以使文件仅对您放在列表中或使用的用户可用
使用firebaseStorageDownloadTokens构建您自己的下载URL
几个答案描述了一个未记录的Google存储对象属性
以下是上下文中的代码:
那不是错别字--你得去窝
道格史蒂文森指出
为什么没有来自节点的getDownloadURL()?
|
![]() |
4
31
如果您正在处理Firebase项目,则可以在云函数中创建已签名的url,而无需包含其他库或下载凭据文件。您只需启用iamapi并向现有服务帐户添加一个角色(见下文)。 初始化管理库并像通常那样获取文件引用:
然后生成一个带有签名的URL
使用vanilla Firebase配置,第一次运行上述代码时会出现错误 身份和访问管理(IAM)API以前未在项目XXXXXX中使用,或已被禁用。 需要具有iam.serviceAccounts.signBlob权限才能对服务帐户my service account执行此操作 |
![]() |
5
22
随着最近功能的变化 对象 响应您可以获得所有需要的信息,将下载URL“缝合”在一起,如下所示:
|
![]() |
6
22
您应该避免在代码中对URL前缀进行harcoding,特别是在有其他选择的情况下
. 我建议用这个选项
然后,获取公共URL非常简单:
|
![]() |
7
19
我成功使用的一种方法是将uuidv4值设置为名为
我不知道使用这个方法有多“安全”(考虑到Firebase将来可能会改变它生成下载url的方式),但它很容易实现。 |
![]() |
8
16
对于那些想知道Firebase Admin SDK serviceAccountKey.json文件应该放在哪里的人。只需将它放在functions文件夹中,然后像往常一样部署。 为什么我们不能像Javascript-SDK那样从元数据中获取下载url呢。生成最终将过期的url并将其保存在数据库中是不可取的。 |
![]() |
9
13
这是我目前使用的,它很简单,工作完美。 你不需要对googlecloud做任何事情。它和Firebase一起工作。。
编辑: 同样的例子,但是上传:
#更新:
|
![]() |
10
10
我不能评论詹姆斯·丹尼尔斯给出的答案,但我认为这一点非常重要。 像他那样发一个签名的网址在很多情况下看起来都很不错 坏的 危险的 根据Firebase的文档,签名的url将在一段时间后过期,因此将其添加到数据库中将导致在特定时间段后出现空url 可能是误解了那里的文档,并且签名的url没有过期,这会导致一些安全问题。 其他人可能应该更新上述解决方案。 如果我说错了 |
![]() |
11
9
抱歉,我不能对你的问题发表评论,因为缺少声誉,所以我会把它包括在这个答案中。 如上所述,生成一个签名的Url,但是我认为您必须使用serviceAccountKey.json,而不是使用service-account.json,您可以在生成serviceAccountKey.json(相应地替换您的projectid) https://console.firebase.google.com/project/YOURPROJECTID/settings/serviceaccounts/adminsdk 例子:
|
![]() |
12
4
如果使用“publicRead”的预定义访问控制列表值,则可以上载文件并使用非常简单的url结构访问它:
|
![]() |
13
3
我也有同样的问题,但是,我看的是firebase函数示例的代码,而不是自述文件。这个问题的答案也没用。。。 通过执行以下操作可以避免传递配置文件:
资料来源: Automatically Generate Thumbnails function README 应用程序引擎的角色应如下所示:
|
![]() |
14
2
如果您只需要一个带有简单URL的公共文件,那么这个方法就可以工作。请注意,这可能会推翻您的Firebase存储规则。
|
![]() |
15
2
没有
|
![]() |
16
2
答复人 https://stackoverflow.com/users/269447/laurent 效果最好
|
![]() |
17
1
对于使用Firebase SDK和
1 - Generate a Private Key 并放入/functions文件夹。 2-按如下方式配置代码:
|
![]() |
18
1
从firebase 6.0.0开始,我可以通过管理员直接访问存储,如下所示:
|
![]() |
19
1
这是我想到的最好的。这是多余的,但对我来说唯一合理的解决办法。
|
![]() |
20
0
我已经把我的答案。。。在下面的网址,你可以得到完整的代码与解决方案
|
![]() |
21
0
对于那些试图使用token参数共享文件并希望使用gsutil命令的人,我是这样做的:
首先,您需要通过运行以下命令进行身份验证:
然后您可以通过以下链接下载该文件: https://firebasestorage.googleapis.com/v0/b/$FIREBASE_REPO/o/$FILE_NAME?alt=media&token=$FILE_TOKEN |
![]() |
22
-1
试试这个:
|
![]() |
23
-1
我在管理员存储文件上看到的
|
![]() |
Xerri · Angularfire2 v5中捕获错误 7 年前 |
![]() |
Werokk · 将图像上载到firebase存储 7 年前 |
|
ttches · 使用云数据库是否会增加带宽 7 年前 |
|
Christoph · Firebase存储病毒检查 7 年前 |