【发布时间】:2021-08-19 19:54:13
【问题描述】:
是否可以通过 Firebase 功能直接将图像下载到用户本地计算机?遇到这种情况怎么办:
- 图像存储在 Firebase 存储中。
- 图像存储在其他云存储提供商上(我可以通过 url 访问它们)。
我不想通过 url 链接下载这些图片,以免泄露图片所在的 url。
【问题讨论】:
标签: firebase google-cloud-functions google-cloud-storage
是否可以通过 Firebase 功能直接将图像下载到用户本地计算机?遇到这种情况怎么办:
我不想通过 url 链接下载这些图片,以免泄露图片所在的 url。
【问题讨论】:
标签: firebase google-cloud-functions google-cloud-storage
是否可以通过 Firebase 功能直接将图像下载到用户本地计算机?
不,这是不可能的。客户端必须与服务器联系才能下载内容。未经授权,不能将内容“推送”给客户端。这对客户端来说将是一个巨大的安全漏洞。
这就是存在下载 URL 的原因 - 为客户端提供通过正常 HTTP 请求下载的内容。
【讨论】:
您可以使用 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;
【讨论】: