【问题标题】:How to upload multiple files (50k+)/ folder to AWS S3 node.js如何将多个文件(50k+)/文件夹上传到 AWS S3 node.js
【发布时间】:2022-11-03 13:14:43
【问题描述】:

我有一个在 Windows 机器上运行的节点 js API,它会生成一些 XML 文件,这些文件稍后会上传到 S3 存储桶。文件数量超过 50k,有时甚至更多。

在我目前的方法中,我使用aws-sdk 包进行上传。基本上我遍历需要上传的文件夹,读取每个文件并上传。

const files = fs.readdirSync(dirPath, {
            withFileTypes: true
});
for (const file of files) {
      const fileContent = fs.readFileSync(path.join(dirPath, file.name));
      const params = {
          Bucket: BUCKET_NAME,
          Key: `${folderPath}/${file.name}`,
          Body: fileContent
      };
      try {
          await s3.upload(params).promise()
      } catch (err) {
          //error handling
          return;
      }
}

上传大约需要 3-4 小时。有没有更好的批量上传文件的方法?或者如果有任何方式上传整个文件夹?

提前致谢

【问题讨论】:

标签: javascript node.js asynchronous amazon-s3 npm


【解决方案1】:

我建议您先压缩文件夹,然后将压缩后的文件夹上传到 S3。在 bash 脚本中,您可以这样做:

zip -r data.zip ./target_folder/

然后你可以上传到 S3 为:

aws s3 cp ./data.zip s3://bucket_name/

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2016-08-07
    • 2017-09-25
    • 2020-03-15
    相关资源
    最近更新 更多