我有一个 txt 文件,内容如下,文件末尾没有换行:
hello-world
这个文件内容的md5是2095312189753de6ad47dfe20cbe97ec
如果我通过 Web 客户端将此文件上传到 Amazon S3 存储桶,则文件 eTag 为 8a8933dab8deebe52e30886da1ef6ee2
此电子标签与预期上传的文件内容 md5 不匹配。
前一个内容加上行尾到文件末尾的结果 md5 是 8a8933dab8deebe52e30886da1ef6ee2
。
与对象 eTag 匹配的内容。为什么 Amazon S3 会在文件末尾添加一个额外的新行来计算 eTag?
如果我上传一个空文件,eTag 匹配空字符串的 md5(不添加新行)。
如果我上传一个在文件末尾有新行的文件,eTag 会匹配此内容的 md5,并在末尾文件中添加一个新行(所以到末尾有 2 个新行)。
Amazon S3 添加这条新行只是为了计算 eTag 的原因是什么?当我下载文件时,内容最后没有这个额外的新行。
此外,当我们无法控制从 Amazon S3 存储桶下载的文件的完整性时,推荐的方法是什么(可能可以进行多部分上传)?