javascript - 您如何从 Firebase 存储中提取图像列表?
问题描述
我已成功将一些照片上传到 Firebase,但我想在某个位置下载所有图像
目前我必须做这个丑陋的代码:
const getPhotos = async () => {
var storage = firebaseApp.storage()
var gsReference = storage.refFromURL('gs://my-app.appspot.com/')
for (let i = 1; i < 4; i++) {
await gsReference
.child(`${user.id}/${name}/photo${i}.jpg`)
.getDownloadURL()
.then((url) => {
fetch(url).then((res) => {
setPhotos((photos) => photos.concat(res.url))
})
})
.catch((error) => {
console.log('ERROR!', error)
})
}
}
这依赖于所有被调用的照片photo1.jpg
等photo2.jpg
。
有没有办法把它们都拉出来,不管它们叫什么?
解决方案
显然有Reference.listAll功能
const getPhotos = async () => {
const storage = firebaseApp.storage();
let reference = storage.refFromURL('gs://my-app.appspot.com/');
reference = reference.child(`${user.id}/${name}`);
const {items} = await reference.listAll();
const urlPromises = items.map(pr => pr.getDownloadURL()
.then(url => fetch(url))
.catch(error => error));
let urls = await Promise.all(urlPromises);
urls = urls.filter(result => !(result instanceof Error));
setPhotos(urls);
}
推荐阅读
- r - 2个数据框之间的总和列
- reactjs - 当我在我的应用程序中使用材料设计引导组件时,在 React 中出现无效的钩子调用错误
- javascript - 将 bigNumber.js 与 gpu.js 一起使用
- ios - iOS 使用源代码处理崩溃 EXC_CRASH (SIGSEGV)
- typescript - 使用 Webpack 和 Typescript 从 CDN 导入 ESM 模块
- spring-boot - 使用 @Cacheable 时出现 EntityNotFoundException
- python - 从数据框中提取并返回大写单词
- r - annotate_figure 不使标题居中
- azure-aks - 来自 API 的入口阻塞错误消息
- ios - IMP 实例的 XCode 12 错误:函数调用的参数太多,预期为 0,有 2