英文:
How to copy storage folder into a new one? (Cloud storage)
问题
我正在尝试将存储中的数据从 documents/docId/file.name
迁移到 users/userId/documents/docId/file.name
。是否可以复制类似 documents/docId
这样的文件夹而无需定义 "file.name"?
我的代码目前只在我提供确切的文件名时才能工作。它看起来是这样的:
const updateStorageData = async () => {
return admin
.storage()
.bucket()
.file('documents/1/Screenshot 2023-05-09 at 00.33.45.png')
.copy(
admin
.storage()
.bucket()
.file('users/testID/documents/1/Screenshot 2023-05-09 at 00.33.45.png'),
);
};
我想尝试复制文件夹中的所有文件,而无需提供确切的文件名。这是否可能?
英文:
I am trying to migrate data in storage from documents/docId/file.name
to users/userId/documents/docId/file.name
. Is it possible to copy folders like documents/docId
without needing to define "file.name"?
My code currently only works when I provide the exact file name. It looks like this:
const updateStorageData = async () => {
return admin
.storage()
.bucket()
.file('documents/1/Screenshot 2023-05-09 at 00.33.45.png')
.copy(
admin
.storage()
.bucket()
.file('users/testID/documents/1/Screenshot 2023-05-09 at 00.33.45.png'),
);
};
I would like to try to copy all files in the folder without needing to provide the exact file name. Is this possible?
答案1
得分: 1
没有一个单独的API可以复制文件夹中的所有文件,但你可以列出文件夹中的文件,然后在循环中逐个复制。
英文:
There no single API to copy all files in a folder, but you can list the files in a folder and then copy them one-by-one in a loop.
答案2
得分: 1
你需要使用getFiles()
和move()
方法,按照以下方式操作:
const getFilesResponse = await admin
.storage()
.bucket()
.getFiles();
const arrayOfFiles = getFilesResponse[0];
const promises = [];
arrayOfFiles.forEach(file => {
// 根据文件的路径(或元数据)检查是否需要移动文件
if (fileToBeMoved) {
promises.push(file.move('....png'))
}
});
await Promise.all(promises)
英文:
You need to use the getFiles()
and move()
methods along the following lines:
const getFilesResponse = await admin
.storage()
.bucket()
.getFiles();
const arrayOfFiles = getFilesResponse[0];
const promises = [];
arrayOfFiles.forEach(file => {
// Check if the file needs to be moved based on its path (or metadata)
if (fileToBeMoved) {
promises.push(file.move('....png'))
}
});
await Promise.all(promises)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论