reactjs - 从 Firebase 存储中删除文件
问题描述
因此,我允许用户在 firebase 的存储中上传某些图像,并且每个文件都以其用户 ID 命名。因此,当用户上传图片时,我会得到该文件的 url
https://firebasestorage.googleapis.com/v0/b/jobify-a7a4a.appspot.com/o/CZx5biMydzQAOx4T8WXJU5jt2852%2Fimages%2Fdreamy-waterfall-4k-sc.jpg?alt=media&token=8e4d60ed-e956-4f71-80d1-58755fe94dbe
因此,当用户更改上传的图像时,我想从存储中删除以前更新的图像。我已经在文档中看到了他们是如何做到的,但这需要我无权访问的文件名。
这是用户上传图片时的代码
function uploadImg(e) {
const file = e.target.files[0];
if (file && file.size < 30000000) {
var storageRef = firebase
.storage()
.ref(`${user.uid}/images`)
.child(file.name);
const task = storageRef.put(file);
task.on(
"state_changes",
function progress(snap) {
setLoading(true);
const percentage = (snap.bytesTransferred / snap.totalBytes) * 100;
loadingref.current.style.height = percentage + "%";
},
function error() {
setNotifibool(true);
setNotifi({
text: "Try Again!",
icon: "fal fa-exclamation-circle"
});
},
function complete() {
setLoading(false);
storageRef.getDownloadURL().then((url) => {
setState(url);
});
setNotifi({
text: "Image Uploaded!",
icon: "fal fa-check-circle"
});
}
);
} else {
window.alert("too big");
}
}
解决方案
您可以通过调用将您拥有的下载 URL 转换回参考firebase.storage().refFromUrl(downloadUrl)
。delete
然后您可以通过调用该引用来删除该文件。
推荐阅读
- python - Why does CNN start at 99.8% Accuracy?
- java - Java 8 error compiling code to add node in linklist but runs correctly in Java 15
- reactjs - 如何在 Amazon S3 中跟踪用户的存储使用情况?
- javascript - 我如何处理我的 React 项目中来自 JSDocs https://jsdoc.app/ 的额外 HTML 文件 module.html#.exports
- apache-spark - How to use Prefect's resource manager with a spark cluster
- laravel - Eloquent relations from multiple joined tables
- powerbi - 如何计算在美国多个或所有州有多少不同/独特的产品?
- c - C- 为什么 return i == 26 可以在函数末尾设置命令行中需要多少个字母的限制?
- python-3.x - 如何从列表中删除一个元素,然后在随机选择选择器中没有该元素的情况下继续运行它?
- api - API io和Web App io有什么区别?(OWASP 前 10 名)