reactjs - 通过 Firebase 将多张图片上传到 Cloud Storage
问题描述
我正在尝试通过 Firebase 将多张图片上传到 Cloud Storage。我正在使用 expo ImagePicker,它可以使用相机拍摄多张图像。
这是代码,
const [image, setImage] = useState([]);
const pickImageOnly = async () => {
let result = await ImagePicker.launchCameraAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
quality: 0.5,
});
if (!result.cancelled) {
setNextImg(true);
setImage((images) => images.concat(result.uri));
}
};
现在,我正在尝试将这些图像存储在 firestore 数据库中。但是,数据库中只存储了一张图像,这是我的尝试。
const uploadImage = async () => {
for (let step = 0; step < image.length; step++) {
const uploadUri = image[step];
let filename = uploadUri.substring(uploadUri.lastIndexOf('/') + 1);
setUploading(true);
setTransferred(0);
const response = await fetch(uploadUri);
const blob = await response.blob();
const storageRef = firebase.storage().ref().child(`${user.email}/images/${filename}`)
const task = storageRef.put(blob);
// Set transferred state
task.on('state_changed', (taskSnapshot) => {
// console.log(
// `${taskSnapshot.bytesTransferred} transferred out of ${taskSnapshot.totalBytes}`,
// );
setTransferred(
Math.round(taskSnapshot.bytesTransferred / taskSnapshot.totalBytes) *
100,
)
})
try {
const ref = await task;
const url = await storageRef.getDownloadURL()
setUploading(false);
setImage(null);
return url;
} catch (e) {
console.log(e);
return null;
}
}
}
如何将所有图像存储在数据库中?
解决方案
推荐阅读
- c# - Amazon WorkMail 超时 .net 核心 SmtpClient
- php - 你能做一个PHP书签吗?
- c++ - 无法在 vscode MacOS Catalina 中编译 C++ 代码
- flutter - 整个子树是否在颤振中在 setState 上重建
- ios - Swift:如何按值对字典进行排序,但值是元组?
- python - 为什么单选按钮不能在具有多个帧的 Tkinter 窗口中工作?
- r - 如何使用 r 访问列中的某些特定类?
- linux - 外接 USB 3.0 硬盘在关闭或重启 Raspberry Pi 4B 时减速并关闭电源
- sql - 从 JsonB 数组中删除数字项
- java - E/FirebaseInstanceId:令牌检索失败:在 Android Studio 中不使用 firebase 时出现 INVALID_SENDER