Как узнать общий размер потока, который я только что загрузил на S3? - PullRequest
0 голосов
/ 10 июля 2019

На сервере 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 Ответ

1 голос
/ 11 июля 2019

Как насчет использования ManagedUpload и httpUploadProgress?
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);
  });
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...