簡體   English   中英

Firebase 存儲-如何使用 node.js 從存儲中刪除文件?

[英]Firebase Storage-How to delete file from storage with node.js?

我想用 node js 刪除 firebase 存儲中的文件夾,因為這是一個 firebase 函數。

例如 :

storageRef.child(child1).child(child2).delete();

像這樣的東西,但 firebase 文檔沒有說明任何事情。

還有一個問題:當初始化存儲文檔節點js需要我的admin json,但實時數據庫不想要這個奇怪為什么?

查看 Google Cloud Storage 的 Node.js 客戶端API 參考,特別是Filedelete()方法。

您可以使用 Node.js 這樣做:

const firebase = require('firebase-admin');

async function deleteImageFromFirebase(imageName) {
    await firebase.storage().bucket().file("folderName/"+imageName).delete();
}

就像這個客戶端:

// Create a reference to the file to delete
var desertRef = storageRef.child('images/desert.jpg');

// Delete the file
desertRef.delete().then(function() {
  // File deleted successfully
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

在 Firebase 網站上查看此信息:如何刪除文件 Firebase-storage

可能晚了,但至少在 Web 上(所以基本上是您需要的),有新的 API 可以刪除整個文件夾。

我測試了刪除一個里面有 2 張圖片的文件夾,它可以工作。 然后我嘗試了一個包含內容的文件夾-A:文件夾-B + 圖片-A。 Folder-B里面也有一張圖片-B; 它仍然刪除了文件夾 A 及其所有內容。

解決方案:

const bucket = admin.storage().bucket();

return bucket.deleteFiles({
  prefix: `posts/${postId}`
);

我在官方文檔中找不到這個(也許真的是新的 API)但是我找到了解決方案的非常酷的文章: Automatically delete your Firebase Storage Files from Firestore with Cloud Functions for Firebase

import { storage } from "./firebaseClient";
import { bucket } from "./firebaseServer";

//Let's assume this is the URL of the image we want to delete
const downloadUrl =  "https://storage.googleapis.com/storage/v1/b/<projectID>.appspot.com/o/<location>?"

//firebase delete function
const deleteImages = async ({ downloadUrl }) => {
    const httpsRef = storage.refFromURL(downloadUrl).fullPath;
    return await bucket
        .file(httpsRef)
        .delete()
        .then(() => "success")
        .catch(() => "error")
}

//call the deleteImages inside async function
const deleteStatus = await deleteImages({ downloadUrl: oldImage });
console.log(deleteStatus)  //=> "success"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM