javascript - 如何在上传多个文件时减少上传时间
问题描述
我有一个目录,其中包含最小范围从 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 分钟。
那么如何减少上传时间???提前致谢。
解决方案
推荐阅读
- python - 根据索引号间隙填充缺失的行,为什么会起作用?- 熊猫系列
- r - 将数据帧拆分并水平合并为R中的单个字段
- spring-boot - 使用 Spring JPA 设置查询范围
- java - Java:字符串:没有给出好的结果
- android - 此应用与您在 Google Play 上的设备不兼容,并在两个版本的应用中兼容
- sublimetext3 - 崇高的键绑定从一个键绑定设置多个设置
- android - Android Google Place 选择器在调试和发布 APK 中工作,但不在实时应用程序中
- python - 向量列表乘以一个带有 numpy einsum 的矩阵
- java - 如何为第 n 个位置 1、11、21、31、41、51、61 制作循环以添加滚动侦听器进行分页
- ios - 织物添加 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 不起作用