Azure Blob Storage生成MD5是否有文件大小限制?分块上传是否受影响?
Azure Blob大文件MD5为空的问题解答
关于文件大小限制:确实存在这个规则——当Block Blob的大小超过1GB时,Azure Blob Storage服务端不会自动生成并存储整个Blob的MD5值。只有当Blob通过**单次PUT操作上传(文件大小≤1GB)**时,服务端才会自动计算并设置MD5元数据,这也是你看到小文件MD5正常、大文件为空的原因。
分块上传的规则适用性:不管是使用JavaScript SDK的
blockBlobClient.uploadData()方法(当文件大小超过SDK默认分块阈值时会自动触发分块上传),还是直接调用Blob Storage的PUT Block + PUT Block List API进行分块上传,服务端都不会自动生成整个Blob的MD5值,这个规则是一致的。解决方案:如果需要大文件的MD5值,你需要在客户端自行计算整个文件的MD5哈希,然后在上传时通过请求头或者SDK参数将MD5值传入。比如用JavaScript SDK上传时,可以在
uploadData的选项中指定blobHTTPHeaders.contentMD5字段,把计算好的MD5值传进去,这样服务端就会把这个值存储为Blob的MD5元数据,后续通过blob.getProperties()就能正常获取到。
注意:分块上传时服务端不会验证你传入的MD5是否与文件内容匹配,所以需要确保客户端计算的MD5准确无误;而单次上传时服务端会自动验证传入的MD5(如果手动设置的话),不匹配会返回错误。
内容的提问来源于stack exchange,提问作者Farid Hajnal
相关产品推荐
相关产品推荐

