首页 > 解决方案 > 从 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");
}
}

标签: reactjsfirebasefirebase-storage

解决方案


您可以通过调用将您拥有的下载 URL 转换回参考firebase.storage().refFromUrl(downloadUrl)delete然后您可以通过调用该引用来删除该文件。


推荐阅读