Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 从firebase存储中删除文件_Reactjs_Firebase_Firebase Storage - Fatal编程技术网

Reactjs 从firebase存储中删除文件

Reactjs 从firebase存储中删除文件,reactjs,firebase,firebase-storage,Reactjs,Firebase,Firebase Storage,因此,我允许用户上传firebase存储中的某些图像,每个文件都以其用户id命名。因此,当用户上传图像时,我会得到该文件的url https://firebasestorage.googleapis.com/v0/b/jobify-a7a4a.appspot.com/o/CZx5biMydzQAOx4T8WXJU5jt2852%2Fimages%2Fdreamy-瀑布-4k-sc.jpg?alt=media&token=8e4d60ed-e956-4f71-80d1-58755fe94dbe 因

因此,我允许用户上传firebase存储中的某些图像,每个文件都以其用户id命名。因此,当用户上传图像时,我会得到该文件的url

https://firebasestorage.googleapis.com/v0/b/jobify-a7a4a.appspot.com/o/CZx5biMydzQAOx4T8WXJU5jt2852%2Fimages%2Fdreamy-瀑布-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");
}
}
函数上传img(e){
const file=e.target.files[0];
if(file&&file.size<30000000){
var storageRef=firebase
.储存
.ref(`${user.uid}/images`)
.child(文件名);
const task=storageRef.put(文件);
任务(
“状态改变”,
功能进度(snap){
设置加载(真);
常量百分比=(snap.bytesttransfered/snap.totalBytes)*100;
loadingref.current.style.height=百分比+“%”;
},
函数错误(){
setNotifibool(真);
setNotifi({
文本:“再试一次!”,
图标:“fal-fa感叹圈”
});
},
函数完成(){
设置加载(假);
storageRef.getDownloadURL()。然后((url)=>{
设置状态(url);
});
setNotifi({
文字:“上传图像!”,
图标:“fal fa检查圈”
});
}
);
}否则{
窗口。警报(“太大”);
}
}

您可以通过调用将下载URL翻译回引用。然后,您可以通过调用该引用来删除该文件。

谢谢,有没有办法检查引用的url文件是否存在于存储中?只能通过调用引用上的
getMetadata
getDownloadURL
。如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样其他人就知道你得到了(足够)的帮助。也可以看到,当我这样做时,我得到了一个错误Firebase存储:refFromUrl()需要一个有效的完整URL,但得到了一个无效的URL。我不知道是否与允许用户也提供img URL有关,这些URL没有保存在存储中..调用
refFromUrl()
使用非来自Firebase存储的URL确实将不起作用,并引发错误。有解决方案吗?要检查它是否是Firebase URL吗?