从Google Cloud Storage(使用Firebase Cloud Functions)获取较短的文件URL

5
我有以下Firebase云函数来获取存储在Google Cloud Storage中的文件的URL。
const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'});

exports.generateFileLink = functions.storage.object().onChange(event => {
  const object = event.data;
  const filePath = object.name;
  const bucket = gcs.bucket(object.bucket);
  const file = bucket.file(filePath);
  const action = 'read';
  const expires = '03-09-2491';
  return file.getSignedUrl({action, expires}).then(signedUrls => {
    console.log(signedUrls[0])
  });
})

这会返回正确的URL,但其长度超过了600个字符。在Firebase Web控制台上看到的同一文件的URL长度不到200个字符。是否有办法使用firebase-admin或firebase-functions模块检索URL以获取较短的URL?
1个回答

4
简短的回答是我们正在开发一个firebase-admin存储客户端,但它还需要一些时间。目前,如果您需要在函数中创建下载URL,则签名URL是正确的选择。
为什么需要在函数中生成签名URL而不是使用Firebase提供的下载URL?是因为您无法通过函数中的客户端检索URL并且需要将其移动到其他地方吗?

我无法找到任何使用 Firebase 模块检索文件下载 URL 的方法。我不需要签名 URL,只需要在云函数中获取一个下载 URL - Salil Thakur
抱歉,让我纠正一下。我确实想要一个签名的URL。Firebase下载URL中有一个令牌属性(大约36个字符),而Google Cloud Storage具有签名(200多个字符)。我正在寻找一个较小尺寸的下载URL。 - Salil Thakur
很遗憾,目前我们尚未通过标准 GCS 客户端支持 Firebase 下载链接。正如所提到的,我们正在努力解决这个问题,但现在您必须使用长链接或存储一个 gs:// URI 并使客户端获取实际下载链接。另一个选择是调查链接缩短器(如 bit.ly)以扩展到完整的签名 URL。 - Mike McDonald
谢谢Mike!将来的更新中我会关注这个功能。 - Salil Thakur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接