如何将存储文件夹复制到新文件夹中? (云存储)

问题描述 投票:0回答:2

我正在尝试将存储中的数据从

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'),
    );
};

我想尝试复制文件夹中的所有文件,而无需提供确切的文件名。这可能吗?

javascript node.js google-cloud-storage firebase-admin
2个回答
1
投票

没有单一的 API 可以复制文件夹中的所有文件,但您可以 列出文件夹中的文件,然后循环一个接一个地复制它们。


1
投票

您需要按照以下几行使用

getFiles()
move()
方法:

const arrayOfFiles = await admin
    .storage()
    .bucket()
    .getFiles();
const listOfFiles = arrayOfFiles[0];

const promises = [];
listOfFiles.forEach(file => {
    // Check if the file need to be moved
    if (fileToBeMoved) {
        promises.push(file.move('my-image-new.png'))
    }
});

await Promise.all(promises)
© www.soinside.com 2019 - 2024. All rights reserved.