【发布时间】:2020-06-26 13:11:01
【问题描述】:
我正在为 nodejs 使用 awd-sdk 并且上传正常。
const checksum = await this.getChecksum(path);
const payload: S3.PutObjectRequest = {
Bucket: bucket,
Key: key,
Body: fs.createReadStream(path),
ContentMD5: checksum,
};
return this.s3.upload(payload).promise();
这段代码非常适用于小文件,并利用了自动验证文件完整性的 ContentMD5。
内容-MD5 根据 RFC 1864 对消息(不包括标头)进行 base64 编码的 128 位 MD5 摘要。此标头可用作消息完整性检查,以验证数据是否与最初发送的数据相同。尽管它是可选的,但我们建议使用 Content-MD5 机制作为端到端的完整性检查。有关 REST 请求身份验证的更多信息,请参阅 REST 身份验证。 https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
但是它不适用于分段上传。
The Content-MD5 you specified is invalid for multi-part uploads.
这是有道理的,因为我们逐块发送文件,但是我想知道我应该如何在分段上传中使用此功能?
【问题讨论】:
-
Content-MD5 对分段上传有效,但您显示的代码不执行分段上传,因此我们需要查看实际引发此错误的代码。
-
是的,当文件大小超过
multipart_threshold时,upload方法会自动进行分段上传。见here。 “新的 AWS.S3.upload() 函数智能地检测缓冲区或流何时可以拆分为多个部分并作为多部分上传发送到 S3。这提供了许多好处” -
我不认为你在这方面有什么运气?我遇到了同样的问题
标签: amazon-web-services amazon-s3 md5 checksum