如何确保 Google Cloud Firebase Storage 中的文件完整性?
How to ensure file integrity in Google Cloud Firebase Storage?
我正在编写一个 Web 服务,用户可以在其中将文件上传和下载到 Google Cloud Firebase Storage 中的用户目录。
假设用户将一个 1GB 的文件上传到存储。当用户上传文件时,其他“进程”已经可以看到该文件。
从没有上传统计信息的进程中识别 100% 上传文件的常用技术是什么?
本地环境中的一种方法是首先调用文件“my-file.iso.tmp”,然后通过删除后缀重命名它们,因为重命名操作是原子的。但这似乎不是解决我的 Firebase 存储问题的合适方法。
非常感谢任何见解!
没有任何方法可以重命名 Firebase 存储中的文件。如果您想显示所有用户设备的实时上传统计信息,那么使用实时数据库可能是一种方式。
var uploadTask = storageRef.child('images/rivers.jpg').put(file);
uploadTask.on('state_changed',
async (snapshot) => {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
await updateUploadStatus(progress)
}
},
(error) => {
// Handle unsuccessful uploads
},
() => {
// Upload completed
await uploadStatus(100)
uploadTask.snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log('File available at', downloadURL);
});
}
);
async function updateUploadStatus(progress) {
const dbRef = firebase.database().ref(`users/${userID}/${fileID}`)
await dbRef.update(progress)
}
updateUploadStatus
会将进度更新到实时数据库,您可以在用户已登录(并处于活动状态)的所有其他设备上收听它,如下所示:
var fileRef = firebase.database().ref(`users/${userID}/${fileID}`);
fileRef.on('value', (snapshot) => {
const data = snapshot.val();
updateFileProgress(data);
});
这取决于您如何在其他设备上获得 fileID
或者您可以收听 users/${userID}
节点本身。虽然进度不是 100%,但您可以使该文件图标或类似的东西变灰。
我正在编写一个 Web 服务,用户可以在其中将文件上传和下载到 Google Cloud Firebase Storage 中的用户目录。
假设用户将一个 1GB 的文件上传到存储。当用户上传文件时,其他“进程”已经可以看到该文件。
从没有上传统计信息的进程中识别 100% 上传文件的常用技术是什么?
本地环境中的一种方法是首先调用文件“my-file.iso.tmp”,然后通过删除后缀重命名它们,因为重命名操作是原子的。但这似乎不是解决我的 Firebase 存储问题的合适方法。
非常感谢任何见解!
没有任何方法可以重命名 Firebase 存储中的文件。如果您想显示所有用户设备的实时上传统计信息,那么使用实时数据库可能是一种方式。
var uploadTask = storageRef.child('images/rivers.jpg').put(file);
uploadTask.on('state_changed',
async (snapshot) => {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
await updateUploadStatus(progress)
}
},
(error) => {
// Handle unsuccessful uploads
},
() => {
// Upload completed
await uploadStatus(100)
uploadTask.snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log('File available at', downloadURL);
});
}
);
async function updateUploadStatus(progress) {
const dbRef = firebase.database().ref(`users/${userID}/${fileID}`)
await dbRef.update(progress)
}
updateUploadStatus
会将进度更新到实时数据库,您可以在用户已登录(并处于活动状态)的所有其他设备上收听它,如下所示:
var fileRef = firebase.database().ref(`users/${userID}/${fileID}`);
fileRef.on('value', (snapshot) => {
const data = snapshot.val();
updateFileProgress(data);
});
这取决于您如何在其他设备上获得 fileID
或者您可以收听 users/${userID}
节点本身。虽然进度不是 100%,但您可以使该文件图标或类似的东西变灰。