我有一个应用程序,需要上传超过100,000 files(1MB每个)到S3 Bucket. 我知道 S3 有上传大文件的 API,但想知道他们是否有上传大量文件的 API。
我目前正在使用putObject并尝试使用uploadAPI 将我的文件上传到 S3。问题是上传时间太长(浏览器超时后完成)并使用大量内存(超过512MB允许的限制)。
保存文件的代码:
saveFile: async (fileUrl, data) => {
await s3.putObject({
Bucket: bucket,
Key: fileUrl,
Body: JSON.stringify(data)
}).promise();
},
Run Code Online (Sandbox Code Playgroud)
在另一个地方,我把它放在这样saveFile的循环中:
for (let file of files) {
await saveFile(file.url, file.data);
}
Run Code Online (Sandbox Code Playgroud)
我搜索了一个解决方案,发现stream可能有助于减少内存需求,但我想知道时间上有什么不同吗?如果是,我该如何实现?谢谢。
我使用React的客户端发送请求,Express与proxy和express-session设置.但每次React向Express服务器发出请求时,都会创建一个新会话.所以我通过手动访问相同的api url来单独检查Express,并且每次刷新页面时它都会继续使用相同的会话.
项目结构:
project-folder
- client // React client with proxy set up
+ src
+ package.json
+ ...
- server.js
- package.json
Run Code Online (Sandbox Code Playgroud)
内部server.js:
const session = require('express-session');
let sessionConf = {
name: 'aoid',
secret: 'stackoverflow',
resave: true,
saveUninitialized: true,
rolling: true,
cookie: {
httpOnly: false,
secure: false,
maxAge: 2000000
}
};
app.use(session(sessionConf));
app.get('/api/prod', (req, res, next) => {
let sessionId = req.sessionID; // is generated each time React client …Run Code Online (Sandbox Code Playgroud)