如何在上传多个文件时减少上传时间

时间:2019-06-13 11:12:55

标签: javascript node.js amazon-s3 electron aws-sdk

我有一个包含小文件的目录,最小范围从2000个文件到10000个文件。

当前没有方法可以在aws-sdk-js中直接将文件夹上传到s3。

我需要递归遍历文件夹内的文件,并将其上传到s3。

我使用了这行代码。

const PARALLEL_UPLOADS = 10;
const q = async.queue((task, callback) => {
  s3.upload({
  Bucket: 'xxx',
  Key: task.name,
  Body: fs.createReadStream(task.path)
 }, callback)
}, PARALLEL_UPLOADS);

q.drain = function() {
  console.log('all items have been processed');
};

我使用walk npm包递归读取文件夹中的文件。 在其中,我将文件推送到队列。

  let walker = walk.walk(path);
  walker.on("file", async function(root, stat, next) {
  q.push({
     name: stat.name,
     path: root + "/" + stat.name,
 }) })

我测试了108 MB的文件夹,但是其中嵌套文件夹中有2700个文件。

上传时间超过45分钟。

那么如何减少上传时间呢?谢谢。

0 个答案:

没有答案