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

后端 未结 4 1880
無奈伤痛
無奈伤痛 2020-12-21 18:23

I want to delete a folder in firebase storage with node js because this is a firebase function.

For example :

storageRef.child(child1).child(child2)         


        
相关标签:
4条回答
  • 2020-12-21 18:27
    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"
    
    0 讨论(0)
  • 2020-12-21 18:36

    Have a look at the Node.js client API Reference for Google Cloud Storage and in particular at the delete() method for a File.

    0 讨论(0)
  • 2020-12-21 18:42

    This might be late but at least on Web (so basically what you need), there is new API to delete the whole folder.

    I tested deleting a folder with 2 pictures inside and it works. I then tried a folder-A with contents: folder-B + picture-A. Folder-B also has a picture-B inside; it still deleted folder-A with all of its contents.

    Solution:

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

    I couldn't find this on the official documentation (perhaps is really new API) but really cool article where I found the solution: Automatically delete your Firebase Storage Files from Firestore with Cloud Functions for Firebase

    0 讨论(0)
  • 2020-12-21 18:51

    You can do it like this using Nodejs as well as client side (so long as users have write permission):

    // 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!
    });
    

    View this info on the Firebase website: how to delete files Firebase-storage

    0 讨论(0)
提交回复
热议问题