AWS 上的分段上传和分块上传有啥区别?

Posted

技术标签:

【中文标题】AWS 上的分段上传和分块上传有啥区别?【英文标题】:What is the difference between Multipart Upload and Chunked Upload on AWS?AWS 上的分段上传和分块上传有什么区别? 【发布时间】:2019-01-16 15:25:11 【问题描述】:

我的文件分块上传目标如下:

顺序分块上传 上传区块时的进度更新 当块上传失败时重试 块大小为 1MB 我的环境最好在 javascript 上,但也可以在 ASP.Net 上。

我使用的是 AWS S3,并且已经配置了 CloudFront。

我目前不确定使用哪个:Multipart Upload API 或 Chunked Upload。那么它们有什么区别,什么时候用呢?

【问题讨论】:

文件有多大? @Michael-sqlbot 它可以是任意大小。分块上传主要用于视频文件。如果文件的大小小于 1MB,那么它会照常上传。 【参考方案1】:

以下是我目前看到的一些差异:

分段上传:

支持并行上传 只允许每个零件尺寸为minimum of 5MB,

分块上传:

使用授权标头进行授权。 minimum of only 8KB 更宽容。

【讨论】:

Multipart 和 chunked 都适用于 sig V2 和 V4。分块的最大总对象大小限制为 5G。多部分允许并行。 我已经让 Multipart Upload 与 v2 签名一起工作。那么我需要做什么才能更改为分块上传(最好使用 v2 签名)? 我从未遇到过证明复杂性分块上传合理的用例。它们不是Transfer-Encoding: chunked 标准意义上的“分块”,并且与多部分完全不同。 我们需要每交付 1MB 显示上传进度的用例怎么样,而 Multipart 只允许最小 5MB。另外,当您说这两个完全不同时,您是在谈论我作为 Web 开发人员不需要知道的底层协议技术吗?你能启发我吗? @Michael-sqlbot 你说 multipart 与 sig V4 一起工作......如果是这样,如何避免在 5MB 到 5GB(!)的潜在巨大单个上传部分上计算 SHA256 哈希。文档太混乱了…… UploadPart 文档建议使用 Content-MD5(成本更低),但没有说明如何使用 sig AWS V4 来做到这一点。块上传文档指定将 X-Amz-Content-Sha256 标头设置为 STREAMING-AWS4-HMAC-SHA256-PAYLOAD 或散列空格,但哪些标头需要成为 UploadPart PUT 请求签名的一部分?我很高兴 OP 提出这个问题。非常混乱的文档。

以上是关于AWS 上的分段上传和分块上传有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3 大文件分片上传

如何使用 Rails 和 Active Storage 实现 AWS S3 分段上传?

使用 plupload 和 Rails 3 的 Amazon S3 分段上传

可变分块格式和固定分块格式有啥区别?

YouTube 频道中的“已发布视频”和“上传”有啥区别?以及如何通过 YouTube Data v3 API 获取它们?

七牛多图及分段上传(JavaScript)