Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js S3随机给我”的;BadDigest“;错误_Node.js_Amazon S3 - Fatal编程技术网

Node.js S3随机给我”的;BadDigest“;错误

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 = 'काक्नोम्यत

我有一个node.js应用程序,定期将一些数据推送到AmazonS3。我使用Put请求将缓冲区推送到S3

我知道S3请求的“content-md5”参数需要是我正在推送的内容的base64编码的md5散列让我困惑的是,90%的时候,我的请求都会成功。另外10%的时候,在我的哈希方法没有改变的情况下,亚马逊会返回“badDigest”错误:

以前有没有人经历过S3的这种随机性?我错过了什么明显的东西吗


谢谢

您可能忘记指定
'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');