【问题标题】:Azure BlockBlobClient downloadWithResponse file size issueAzure BlockBlobClient downloadWithResponse 文件大小问题
【发布时间】:2020-04-24 06:19:30
【问题描述】:
我遇到了一个问题,即下载的文件大小大于存储在 azure blob 上的文件大小。我正在使用 java api。这是一个问题,因为下载完成后校验和现在不再匹配?
我正在使用 BlockBlobClient downloadWithResponse 方法。我正在使用 BlobRange 指定要下载的范围。我需要具体说明最终范围吗?
例如:
我正在下载一个 101mb 的文件。我选择 10mb 的范围。我的总下载量是 110mb 吗?
【问题讨论】:
标签:
java
azure
azure-storage
azure-blob-storage
【解决方案1】:
我的总下载量是 110mb 吗?
范围是指 blob 上的字节范围,如果它小于 blob 大小,则文件将不完整,如果更大,则仅下载 blob 大小文件。
因此您不必指定范围,您可以使用 blob 属性 BlobSize、Long.MAX_VALUE 或 null 它们都可以下载完整的 blob。
在我的测试中,我的文件都是完整的,所以请提供你的代码让我进行测试,下面是我对null rage 的测试。将 null 作为 BlobRange 值传递将默认为 Blob 的整个范围。
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("test");
String fileName ="blob.jpg";
BlobClient blobClient = containerClient.getBlobClient(fileName);
//long dataSize = blobClient.getProperties().getBlobSize();
//BlobRange range = new BlobRange(0, dataSize);
OutputStream outputStream = new FileOutputStream("E:\\"+fileName);
DownloadRetryOptions options = new DownloadRetryOptions().setMaxRetryRequests(5);
blobClient.downloadWithResponse(outputStream,null,options,null,false,null,null);