使用spark md5在本地计算S3 ETag

问题描述 投票:0回答:1

我已经将文件14MB分别以块(5MB)的大小上传到S3,并且还使用spark-md5计算了每个块的哈希值。每个块的单独哈希(由spark-md5生成)与上传到S3的每个块的ETag匹配。

但是通过完全上传到S3生成的ETag哈希与spark-md5生成的本地计算的哈希不匹配。以下是本地哈希的步骤:

  1. 生成每个块的哈希(由spark-md5生成)
  2. 加入每个块的哈希
  3. 转换为十六进制
  4. 计算的哈希

下面是代码,请检查是否有任何错误。方法1:

        var mergeChunk = self.chunkArray.join('');
        console.log("mergeChunk: " + mergeChunk);

        var hexString = toHexString(mergeChunk);
        console.log("toHexString: " + hexString);

        var cspark1 = SparkMD5.hash(hexString);
        console.log("SparkMD5 final hash: " + cspark1);

方法2:

       var mergeChunk = self.chunkArray.join('');
       console.log("mergeChunk: " + mergeChunk);
       var cspark2 = SparkMD5.hash(mergeChunk);
       console.log("SparkMD5 final hash: " + cspark2);

请提供用于计算ETag的正确逻辑。

javascript amazon-s3 md5 angular8
1个回答
0
投票

标签是不透明的; AWS不能保证分段上传的标签是什么。

我认为它只是块中的猫(按照最终POST中列出的顺序,但是您不能依靠它。

© www.soinside.com 2019 - 2024. All rights reserved.