【问题标题】:How to delete Firebase Storage image by url in react native如何在本机反应中通过 url 删除 Firebase 存储图像
【发布时间】:2022-09-24 01:30:13
【问题描述】:

我找不到答案 对于 Web V9,我要做的就是使用 URL 而不是图像名称从 Firebase-Storage 中删除图像,如他们的文档here 中所示

import { initializeApp } from \"firebase/app\";
import { getAuth } from \"firebase/auth\";
import { getDatabase } from \"firebase/database\";
import { getFirestore } from \"firebase/firestore\";
import { getStorage } from \"firebase/storage\";



const firebaseConfig = {
  apiKey: process.env.REACT_APP_FIREBASE_KEY,
  authDomain: \".....\",
  databaseURL: \".....\",
  projectId: \".......\",
  storageBucket: \"......\",
  messagingSenderId: \".......\",
  appId: \".......\",
  measurementId: \"......\"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
export const database = getDatabase(app);
export const firestore = getFirestore(app);
export const storage = getStorage(app)
export const auth = getAuth()

所以这是我尝试过的代码

import { firestore, storage, database } from \"../../firebase\"
import { deleteObject, ref } from \"firebase/storage\";
import { storage } from \"./firebase\";

const SingleApplication = () => {

function delete(){

const ImgUrl = \"https://firebasestorage.googleapis.com:443/v0/b/......appspot.com/o/Application-Imeges%2F09........\"

const dImgRef = ref(storage, ImgUrl) //ImgUrl is a firebase sotrage url

deleteObject(dImgRef).then(() =>{
        console.log(\"deleted\")
        
      })
}

return (
        <div className=\'Main\'>
          </div>
    )
  }
    
    export default SingleApplication

错误是:

Firebase Storage: Invalid URL \'https://firebasestorage.googleapis.com:443/v0/b/......appspot.com/o/Application-Imeges%2F09F501.......\'

我正在使用反应 JSX

  • 您能否分享您的完整代码,以便我们可以看到 storage 来自哪里并被初始化? Firebase 模块化 SDK 中也没有任何 refFromURL
  • 问题已编辑,实际上它在那里import { refFromURL } from \'firebase/database\'
  • 您是否还可以在此文件中包含您的 import 语句并尝试记录一次 ImgUrl 并共享输出?
  • 我无法理解您的意思,图像 url 指的是存储图像 url 看起来像这样\"https://firebasestorage.googleapis.com:443/v0/b/....../o/Application-Imeges%2F49106BEA-.....

标签: javascript reactjs firebase react-native firebase-storage


【解决方案1】:

授予删除 Firebase 存储规则中文件的权限

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /folder1/{image} {
      allow read: if true
      ...
      allow delete: if true
    }
  }
}

然后

import { deleteObject, ref } from "firebase/storage"

const pathImage = "folder1/image.jpg" // your path
const reference = ref(storage, pathImage)
deleteObject(reference).then().catch()

【讨论】:

  • 如果你的意思是规则,那是真的,但我得到的只是Unhandled Promise Rejection: TypeError: db._checkNotDeleted is not a function. (In 'db._checkNotDeleted('ref')', 'db._checkNotDeleted' is undefined)
  • 我没有图像的名称它是唯一的字符串随机字符串我只有 URL 看起来像这样 https://firebasestorage.googleapis.com:443/v0/b/....../o/Application-Imeges%2F49106BEA-..... 我已经尝试过你的答案
  • 未处理的承诺拒绝:FirebaseError:Firebase 存储:无效的 URL 'firebasestorage.googleapis.com:4
猜你喜欢
  • 2020-01-24
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 2017-08-13
  • 2018-05-02
  • 2021-10-21
相关资源
最近更新 更多