我有一个app需要上传超过
我目前正在使用
保存文件的代码如下:
在另一个地方,我把
我搜索了一下解决方案,发现
100,000个
文件(每个文件大小为1MB
)到S3 Bucket
。我知道S3有API用于上传大文件,但不确定是否有API可用于上传大量文件。我目前正在使用
putObject
并尝试upload
API将我的文件上传到S3。问题是上传速度太慢(在浏览器超时之后才完成),且使用了大量内存(超过允许的512MB
限制)。保存文件的代码如下:
saveFile: async (fileUrl, data) => {
await s3.putObject({
Bucket: bucket,
Key: fileUrl,
Body: JSON.stringify(data)
}).promise();
},
在另一个地方,我把
saveFile
放在了一个循环中,像这样:for (let file of files) {
await saveFile(file.url, file.data);
}
我搜索了一下解决方案,发现
stream
可以通过减少内存需求来帮助解决问题,但我想知道在时间方面是否有任何差异?如果有的话,该如何实现?谢谢。
forEach
时,实际上是指普通的[ ].map
,包裹在一个await Promise.all()
中。这将导致大量请求 "并行" 进行,它不会等待一个请求完成才处理下一个请求(因为await
关键字在其中没有意义)。 上面的回答已更新以引用Promise.all
而不是forEach
- Simone Lusenti