gpt4 book ai didi

asynchronous - Amazon S3 分段上传异步

转载 作者:行者123 更新时间:2023-12-04 04:57:24 26 4
gpt4 key购买 nike

我正在使用 Amazon S3 分段上传,我读到您可以并行上传文件的各个部分。但是,通过查看文档,我发现亚马逊对上传文件部分的响应不包含部件号。所以我的问题是,如果我异步上传文件的第 1 部分和文件的第 2 部分,然后我检查来自亚马逊的响应,我怎么知道响应是指文件的第 1 部分还是第 2 部分?

这是一个示例请求和响应。

Request:
PUT /my-movie.m2ts?partNumber=1&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
Host: example-bucket.s3.amazonaws.com
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 10485760
Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==
Authorization: AWS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc=

***part data omitted***

Response:
HTTP/1.1 200 OK
x-amz-id-2: Vvag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date: Mon, 1 Nov 2010 20:34:56 GMT
ETag: "b54357faf0632cce46e942fa68356b38"
Content-Length: 0
Connection: keep-alive
Server: AmazonS3

最佳答案

您在每个部分的响应中返回的 Etag 是您刚刚上传的部分的 md5sum。

在您的示例中,除非我犯了错误,否则您的 Content-MD5 会解码为 a54357aff06328ae46d942af69146b38 ...所以我建议除非您的 MD5 计算有问题,否则您发布的请求和响应不要' t 实际上属于一起。

我写的分段上传器非常迂腐,因为我用它来归档关键数据(如此迂腐,实际上它认为分段上传成功绝对确定最终产品后,它实际上转身重新下载文件是完美的)......但是这个实用程序通过一个阻塞的调用顺序提交部件并且在响应返回之前不会返回......并且它的一个健全性测试是将 block 的本地计算的MD5与Etag 返回,如果它们不匹配,这是一个 fatal error ......所以除非你有相同的 block ,否则你似乎可以通过这种方式关联这些部分。

额外的:

我没有使用丢失的正文来计算 md5 :) 我拿了你的标题:

Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==

从base64->二进制->十六进制转换得到a54357aff06328ae46d942af69146b38。

我通过将 2 个命令行实用程序串在一起来进行验证下载,如下所示:
wget --server-response '$signed_url' -O - | md5sum

这会下载文件并将字节传输到 md5sum 以计算校验和,因此我可以下载一个无限大的文件,而无需使用任何磁盘空间和很少的内存。 wget实用程序具有内置的重试功能,如果连接中断,它将尝试从中断的字节位置继续。该管道的输出是文件的 md5sum (stdout) 和服务器发送的 header 以及进度表 (stderr)。我的实用程序捕获标准输出并进行比较,同时让标准错误泄漏到控制台进行观察。

关于asynchronous - Amazon S3 分段上传异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com