是否可以在firebase存储上复制现有文件而无需再次上传?
我需要它用于我的应用程序的已发布/工作版本设置。
答案 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)
})
}
}