Reactjs 从firebase存储中删除文件
因此,我允许用户上传firebase存储中的某些图像,每个文件都以其用户id命名。因此,当用户上传图像时,我会得到该文件的urlReactjs 从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 因
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吗?