使用 BlobDownload 客户端的不同校验和值
Posted
技术标签:
【中文标题】使用 BlobDownload 客户端的不同校验和值【英文标题】:Different Checksums Values using BlobDownload Client 【发布时间】:2020-05-29 17:01:24 【问题描述】:我遇到了一个奇怪的问题。我正在从我的存储帐户下载相同的文件,没有问题。但是,每次下载我都会得到不同的校验和值。下面是我正在使用的代码。有什么理由会这样吗?谢谢
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("test");
String fileName ="blob.iso";
BlobClient blobClient = containerClient.getBlobClient(fileName);
blobClient.download("path to file");
【问题讨论】:
我可以知道你是如何得到校验和的吗?根据我的测试,它们刚好匹配。 我正在使用linux命令sha512sum 【参考方案1】:根据我的测试,校验和正好匹配。
这是我的代码:
public static void main(String[] args) throws Exception
String connectStr = "DefaultEndpointsProtocol=https;AccountName=storagetest789;AccountKey=G3************1w==;EndpointSuffix=core.windows.net";
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("pub");
BlobClient blobClient = containerClient.getBlobClient("azure-cli-2.0.67.msi");
blobClient.downloadToFile("d:/test/azure-cli-2.0.67.msi",true);
System.out.println("azure-cli-2.0.67.msi -> " + DigestUtils.md5DigestAsHex(FileUtils.openInputStream(new File("d:/test/azure-cli-2.0.67.msi"))));
我运行了两次,得到以下输出:
// First time
azure-cli-2.0.67.msi -> 4510dc9ee0dd38bfbf261f6a9e467d34
// Second time
azure-cli-2.0.67.msi -> 4510dc9ee0dd38bfbf261f6a9e467d34
我了解到您正在尝试下载一个可能较大的 ISO 文件。我不确定这是否会成为问题。当网络环境不好时,下载的数据可能不完整或不正确,可能会导致您的问题。
【讨论】:
blobClient.downloadToFile("d:/test/azure-cli-2.0.67.msi",true);我收到一个错误,该函数只需要 1 个参数 @the_greeny_maven 检查您的azure-storage-blob
版本。目前,最新版本为 12.4.0。 downloadToFile
有一个需要 2 个参数的重载。查看来源:public BlobProperties downloadToFile(String filePath, boolean overwrite)
@the_greeny_maven 我使用 sha1sum
并得到与从 java 得到的结果相同的结果。 sha512sum
不会有问题。以上是关于使用 BlobDownload 客户端的不同校验和值的主要内容,如果未能解决你的问题,请参考以下文章