我希望能够跟踪S3文件上传的进度(以字节为单位上传的字节数)。
在任何人将此标记为欺骗之前 - 它不是。我在StackOverflow上看到的每个其他答案实际上都是错误的。如果您这样做:
s3
.putObject(
{
Bucket: 'xyz',
Key: 'wow.png',
Body: data,
},
(err, data) => {
console.log('done', err, data);
}
)
.on('httpUploadProgress', progress => {
console.log('Progress:', progress);
});
您会获得一次进度更新,显示总大小:
Progress { loaded: 1082019, total: 1082019 }
这没用。我正在寻找的是一个更细粒度的上传进度报告,就像你在上传过程中通常看到的那样(无论文件大小是1MB还是100MB):
100%中的0% 100%中有3% 百分之七的百分之七 100%中有9% (等)
答案 0 :(得分:1)
嗯,这就是答案(尽管很蹩脚)。只是分享这个,因为它可能是其他人的潜在问题。
此不会在Node.js环境中工作!我一直在以这种方式测试它,它只调用httpUploadProgress
回调一次。将代码移动到实际的前端客户端后,它会按预期工作,并在文件上传时打印进度。
答案 1 :(得分:0)
尝试一下:
s3
.putObject({
Bucket: 'xyz',
Key: 'wow.png',
Body: data,
},
(err, data) => {
console.log('done', err, data);
}
)
.on('httpUploadProgress', ({ loaded, total }) => {
console.log(ContentType, 'Progress:', loaded, '/', total, `${Math.round(100 * loaded / total)}%`);
})