通过 Firebase Functions 下载图像到用户本地机器
Download images to users local machines via Firebase Functions
是否可以通过 Firebase 函数直接将图像下载到用户本地计算机?在以下情况下如何操作:
- 图像存储在 Firebase 存储中。
- 图像存储在其他云存储提供商上(我可以使用 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 请求下载的内容。
是否可以通过 Firebase 函数直接将图像下载到用户本地计算机?在以下情况下如何操作:
- 图像存储在 Firebase 存储中。
- 图像存储在其他云存储提供商上(我可以使用 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 请求下载的内容。