tencentyun/cos-java-sdk-v5

COS文件上传后,再调用getObjectMetadata,得到的Etag有误

lalinking opened this issue · 2 comments

文件是通过 spark 直接导入到 cosn://buc-13424123/key1/da/pp1/part-00000-f124f8f4-5b44-4c83-aece-6cd20629860b-c000.snappy.parquet
获取到的 ETag 为:001a387d4ca31d1952d3409c63503c71-3
得到的 ETag 位数超过32位,后面的 “-3” 去掉也不是正确的校验值。

这个 ETag 不知道具体是什么东西。文档里说不一定是MD5,但可以肯定是文件内容校验值。
我测试了用 java-sdk 上传后, ETag 存的都是文件 MD5。
但问题是这种 spark 上传的为啥会变成一个不知道是啥的值呢?另外我换了一个bucket,发现查询到的 ETag 又变成 MD5 了。为什么会这样?ETag 就不能是一个确切的值吗。

ETag 全称为 Entity Tag,是对象被创建时标识对象内容的信息标签,可用于检查对象的内容是否发生变化,例如"8e0b617ca298a564c3331da28dcb50df"。此头部并不一定返回对象的 MD5 值,而是根据对象上传和加密方式而有所不同。如果您需要校验上传到云端的文件和本地文件的一致性,我们推荐您使用 x-cos-hash-crc64ecma 头部中的 CRC64编码进行校验。