Azure BlockBlobClient downloadWithResponse 文件大小问题
Posted
技术标签:
【中文标题】Azure BlockBlobClient downloadWithResponse 文件大小问题【英文标题】:Azure BlockBlobClient downloadWithResponse file size issue 【发布时间】:2020-04-24 06:19:30 【问题描述】:我遇到了一个问题,即下载的文件大小大于存储在 azure blob 上的文件大小。我正在使用 java api。这是一个问题,因为下载完成后校验和现在不再匹配?
我正在使用 BlockBlobClient downloadWithResponse 方法。我正在使用 BlobRange 指定要下载的范围。我需要具体说明最终范围吗?
例如: 我正在下载一个 101mb 的文件。我选择 10mb 的范围。我的总下载量是 110mb 吗?
【问题讨论】:
请编辑您的问题并包含您编写的代码。 关于这个问题的任何更新? 【参考方案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);
【讨论】:
以上是关于Azure BlockBlobClient downloadWithResponse 文件大小问题的主要内容,如果未能解决你的问题,请参考以下文章