在firebase存储上复制文件?

时间:2016-09-17 11:01:11

标签: firebase firebase-storage

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

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

2 个答案:

答案 0 :(得分:6)

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

但Firebase存储是建立在Google云端存储之上的,这意味着您也可以使用后者的API。看起来gsutil cp是您正在寻找的内容。来自the docs

  

gsutil cp命令允许您在本地文件系统和云之间复制数据,在云中复制数据,并在云存储提供商之间复制数据。

请注意,gsutil可以完全访问您的存储空间。因此,它应该在您完全信任的设备上运行(例如服务器或您自己的开发机器)。

答案 1 :(得分:2)

这是我为项目最终使用的一种方法。

虽然涵盖了更广泛的情况,并将文件夹fromFolder下的所有文件复制到toFolder,但可以很容易地从问题中采用该情况(仅复制可以通过定界符=“ / “-有关更多详细信息,请参见the docs

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)
            })
    }
}