在firebase存储上复制文件?

rou*_*bin 4 firebase firebase-storage

是否可以复制firebase存储上的现有文件而无需再次上传?

我需要它用于我的应用程序的已发布/工作版本设置.

Fra*_*len 6

Firebase存储API中没有方法可以复制您已上传的文件.

但Firebase存储是建立在Google云端存储之上的,这意味着您也可以使用后者的API.它看起来就像gsutil cp你在寻找.来自文档:

gsutil cp命令允许您在本地文件系统和云之间复制数据,在云中复制数据,以及在云存储提供程序之间复制数据.

请记住,您gsutil可以完全访问存储分区.因此,它应该在您完全信任的设备上运行(例如服务器或您自己的开发机器).

  • 我想人们可以使用这个节点库来复制文件(但不确定它是否允许复制文件夹):https://github.com/googleapis/nodejs-storage (2认同)

vir*_* us 5

这是我为我的项目最终采用的方法。

虽然它涵盖了更广泛的情况并将文件夹下的所有文件复制fromFoldertoFolder,但它可以轻松地应用于问题中的情况(仅复制可以传递分隔符 =“/”的文件 - 请参阅文档以了解更多详细信息)

const {Storage} = require('@google-cloud/storage');


module.exports = class StorageManager{

    constructor() {
        this.storage = new Storage();
        this.bucket = this.storage.bucket(<bucket-name-here>)
    }

    listFiles(prefix, delimiter){
        return this.bucket.getFiles({prefix, delimiter});
    }
    deleteFiles(prefix, delimiter){
        return this.bucket.deleteFiles({prefix, delimiter, force: true});
    }

    copyFilesInFolder(fromFolder, toFolder){
        return this.listFiles(fromFolder)
            .then(([files]) => {
                let promiseArray = files.map(file => {
                    let fileName = file.name
                    let destination = fileName.replace(fromFolder, toFolder)
                    console.log("fileName = ", fileName, ", destination = ", destination)
                    return file.copy(destination)
                })
                return Promise.all(promiseArray)
            })
    }
}
Run Code Online (Sandbox Code Playgroud)