19

我知道 Amazon S3 为大文件添加了分段上传。那太棒了。我还需要在客户端为那些通过下载千兆字节加文件并出现错误的客户提供类似的功能。

我意识到浏览器内置了一定程度的重试和恢复功能,但是当您谈论大文件时,我希望能够从中断的地方继续,而不管错误的类型如何。

有任何想法吗?

谢谢,布赖恩

4

5 回答 5

12

如果您想构建自己的解决方案,S3 支持标准 HTTP“范围”标头。

S3 获取对象

于 2011-01-28T06:18:10.810 回答
3

我使用aria2c。对于私有内容,您可以使用“GetPreSignedUrlRequest”生成可以传递给 aria2c 的临时私有 URL

于 2011-07-29T03:51:41.280 回答
1

Just updating for current situation, S3 natively supports multipart GET as well as PUT. https://www.youtube.com/watch?v=uXHw0Xae2ww (zip forward to 26:00).

于 2014-03-14T21:30:39.660 回答
1

S3 有一个称为字节范围提取的功能。这是对分段上传的一种下载恭维:

在 GET Object 请求中使用 Range HTTP 标头,您可以从对象中获取字节范围,只传输指定的部分。您可以使用与 Amazon S3 的并发连接从同一对象中获取不同的字节范围。与单个整体对象请求相比,这有助于您实现更高的聚合吞吐量。获取较大对象的较小范围还可以让您的应用程序在请求中断时缩短重试时间。有关详细信息,请参阅获取对象。

字节范围请求的典型大小为 8 MB 或 16 MB。如果使用分段上传 PUT 对象,最好以相同的部分大小(或至少与部分边界对齐)获取它们以获得最佳性能。GET 请求可以直接寻址单个部分;例如,GET ?partNumber=N。

资料来源:https ://docs.aws.amazon.com/whitepapers/latest/s3-optimizing-performance-best-practices/use-byte-range-fetches.html

于 2021-12-17T20:08:18.963 回答
0

注意:仅适用于 Ruby 用户

从 Ruby 中尝试aws-sdkgem,然后下载

object = AWS::S3::Object.new(...)
object.download_file('path/to/file.rb')

因为它默认下载一个带有多部分的大文件。

使用多部分方法下载大于 5MB 的文件

http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Object.html#download_file-instance_method

于 2017-08-10T09:07:32.133 回答