簡體   English   中英

如何實際跟蹤 S3 上傳進度(JavaScript SDK)

[英]How to actually track S3 upload progress (JavaScript SDK)

我希望能夠跟蹤 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% 中的 7%
100% 中的 9%
(等等)

好吧,這就是答案(盡管很蹩腳)。 只是分享這個,因為它可能是其他人的潛在問題。

不會在Node.js的環境中工作! 我一直在以這種方式測試它, httpUploadProgress調用一次httpUploadProgress回調。 一旦我將代碼移動到實際的前端客戶端,它就會按預期工作並在文件上傳時打印進度。

嘗試這個:

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)}%`);
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM