Node.js S3随机给我”的;BadDigest“;错误
我有一个node.js应用程序,定期将一些数据推送到AmazonS3。我使用Put请求将缓冲区推送到S3 我知道S3请求的“content-md5”参数需要是我正在推送的内容的base64编码的md5散列让我困惑的是,90%的时候,我的请求都会成功。另外10%的时候,在我的哈希方法没有改变的情况下,亚马逊会返回“badDigest”错误: 以前有没有人经历过S3的这种随机性?我错过了什么明显的东西吗Node.js S3随机给我”的;BadDigest“;错误,node.js,amazon-s3,Node.js,Amazon S3,我有一个node.js应用程序,定期将一些数据推送到AmazonS3。我使用Put请求将缓冲区推送到S3 我知道S3请求的“content-md5”参数需要是我正在推送的内容的base64编码的md5散列让我困惑的是,90%的时候,我的请求都会成功。另外10%的时候,在我的哈希方法没有改变的情况下,亚马逊会返回“badDigest”错误: 以前有没有人经历过S3的这种随机性?我错过了什么明显的东西吗 谢谢 您可能忘记指定'utf8'作为更新的参数 var status = 'काक्नोम्यत
谢谢 您可能忘记指定
'utf8'
作为更新的参数
var status = 'काक्नोम्यत्क्नोम्यत्चं शक्नोम्यत्तुमतुम् ।तुम् ।् । नोपहिनस्ति माम् ॥';
var contentMd5 = crypto
.createHash('md5')
.update(status, 'utf8')
.digest('base64');
如果没有,它在大多数情况下都可以工作,但当字符串包含多字节字符时就不行了。aws sdk将自动为您计算ContentMD5和ContentLength值。如果您有一个UTF-8字符串,并且正在使用'।्'.设置ContentLength值的长度S3将返回BadDigest错误。因此,在我的例子中,解决方案是让aws sdk计算ContentMD5和ContentLength值。谢谢,它似乎应该默认为utf8,但这没关系。
var status = 'काक्नोम्यत्क्नोम्यत्चं शक्नोम्यत्तुमतुम् ।तुम् ।् । नोपहिनस्ति माम् ॥';
var contentMd5 = crypto
.createHash('md5')
.update(status, 'utf8')
.digest('base64');