如何找到刚刚上传到S3的流的总大小?

时间:2019-07-09 23:03:34

标签: javascript amazon-web-services amazon-s3

在Node.js服务器上,我正在将流上传到S3。这是一个简化的示例:

import S3 from "aws-sdk/clients/s3"

const s3 = new S3({ accessKeyId, secretAccessKey, region })

async function uploadStream(key, stream) {
  const upload = s3.upload({
    Body: stream,
    Bucket: clientFiles,
    Key: key,
  })

  const result = await upload.promise()
  return result // { Bucket, ETag, Key, Location }
}

由于我使用的是流,所以我不知道启动上传时的总大小,并且上传结果只提供了Bucket,ETag,Key和Location值。

如何获取上传流的总大小?

1 个答案:

答案 0 :(得分:1)

如何使用ManagedUploadhttpUploadProgress
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html#httpUploadProgress-event

async function uploadStream(key, stream) {
  const upload = new AWS.S3.ManagedUpload({
    params: {
      Body: stream,
      Bucket: clientFiles,
      Key: key
    }
  });
  upload.on("httpUploadProgress", function(progress) {
    console.log(progress.total);
  });
  ...