通过 Firebase Functions 下载图像到用户本地机器

Download images to users local machines via Firebase Functions

是否可以通过 Firebase 函数直接将图像下载到用户本地计算机?在以下情况下如何操作:

  1. 图像存储在 Firebase 存储中。
  2. 图像存储在其他云存储提供商上(我可以使用 url 访问它们)。

我不想通过 url 链接下载这些图片,这样我就不会泄露图片所在的 url。

您可以使用 Google API 库创建预签名 URL。 Firebase 存储桶只是一个普通的 GCS 存储桶。像这样:

const admin = getFirebaseAdmin();
let bucket = admin.storage().bucket(firebaseConfig.storageBucket);

const f = bucket.file(location);
if (!(await f.exists())) {
    throw logError(`No file found at specified location: ${location}`, functionName)
}

const url1 = await f.getSignedUrl({
    action: 'read',
    expires: new Date((new Date).getTime() + (24 * 60) * 60000)   // expires in 24 hours
});
const url = url1[0];

return url;

Is it possible to download images to users local machines directly via Firebase functions?

不,这不可能。客户端必须联系服务器才能下载内容。未经授权,内容不能“推送”给客户端。这对客户端来说将是一个巨大的安全漏洞。

这就是存在下载 URL 的原因 - 为客户端提供可通过普通 HTTP 请求下载的内容。