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

gajydyqb  于 2023-05-22  发布在  Node.js
关注(0)|答案(2)|浏览(263)

我正在尝试将存储中的数据从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'),
    );
};

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

bgibtngc

bgibtngc1#

没有一个API可以复制文件夹中的所有文件,但您可以list the files in a folder,然后在循环中逐个复制它们。

gblwokeq

gblwokeq2#

您需要沿着以下方式使用getFiles()move()方法:

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)

相关问题