从firebase存储文件获取URL

从firebase存储文件获取URL,firebase,google-cloud-functions,google-cloud-storage,Firebase,Google Cloud Functions,Google Cloud Storage,我想从onFinalize触发器中获取存储区内文件的下载URL。在最好的情况下,我想要一个尽可能短的URL(因此最好不要签名的URL,而应该是在Firebase存储UI中可以看到的公共URL)。请记住,我首先移动文件,因此无法直接从onFinalize参数访问它 我目前有以下解决方案: await imageRef.move(newPath); const newFile = defaultBucket.file(newPath); const url = (await newFile.getS

我想从onFinalize触发器中获取存储区内文件的下载URL。在最好的情况下,我想要一个尽可能短的URL(因此最好不要签名的URL,而应该是在Firebase存储UI中可以看到的公共URL)。请记住,我首先移动文件,因此无法直接从onFinalize参数访问它

我目前有以下解决方案:

await imageRef.move(newPath);
const newFile = defaultBucket.file(newPath);
const url = (await newFile.getSignedUrl({
                 action: 'read',
                 expires: '03-09-2491'
}))[0];
这种方法有两个缺陷:

  • 显然,签名的URL仅在3天内有效。这可能是一个错误
  • URL很长,占用了我Firestore中的很多空间

我还看到了一种方法,其中URL是从bucket名称和令牌复制的,但我没有在文件的元数据中找到令牌。

您说您希望在UI中使用类似公共URL的URL。这个URL本身可以接受吗?如果是这样的话,它似乎给了你你需要的东西。这个答案并不涉及获取URL所需的令牌。第一种方法不起作用,第二种方法是我在这里提到的,URL只在几天内有效。这描述了如何获取和使用下载令牌。也许是你见过的那个?谢谢,我试过了。第一个问题是,我不知道如何访问元数据,因为我正在复制文件,所以无法将参数传递给上载过程。另外,
firebaseStorageDownloadTokens
在任何产品中都没有记录,因此它可能会在即将发布的版本中被删除。为什么要调用“move()”而不是“upload()”?您可以指定令牌。注意,令牌元数据是嵌套的。并且,只是想检查一下,您是否尝试过按照中的步骤进行操作?您说您希望在UI中使用类似于公共URL的URL。这个URL本身可以接受吗?如果是这样的话,它似乎给了你你需要的东西。这个答案并不涉及获取URL所需的令牌。第一种方法不起作用,第二种方法是我在这里提到的,URL只在几天内有效。这描述了如何获取和使用下载令牌。也许是你见过的那个?谢谢,我试过了。第一个问题是,我不知道如何访问元数据,因为我正在复制文件,所以无法将参数传递给上载过程。另外,
firebaseStorageDownloadTokens
在任何产品中都没有记录,因此它可能会在即将发布的版本中被删除。为什么要调用“move()”而不是“upload()”?您可以指定令牌。注意,令牌元数据是嵌套的。顺便问一下,您是否尝试过按照中的步骤进行操作?