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 属性 BlobSizeLong.MAX_VALUEnull 它们都可以下载完整的 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 文件大小问题的主要内容,如果未能解决你的问题,请参考以下文章

Azure 上的 Websocket 服务器

带有自定义窗口的 Azure 流分析

未返回 Azure Stream Analytic SQL TumblingWindow 预期窗口

Dow事件

dow

CentOS7 | Failed to start LSB: Bring up/dow....