[英]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,但實時數據庫不想要這個奇怪為什么?
您可以使用 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.