c# - Azure 下载 blob 部分

标签 c# azure azure-storage

如果有人有使用 DownloadRangeToStream 函数的经验,我将不胜感激。

Here他们说参数“长度”是数据的长度,但根据我的经验,它是要下载的段的上部位置,例如“长度”-“偏移量”=数据的实际长度。

如果有人能给我一些用于分块下载 blob 的代码,我也会非常感激,因为前面提到的功能似乎不起作用。

感谢您的帮助

最佳答案

试试这个代码。它通过将大型 blob 分割成 1 MB 的 block 来下载它。

    static void DownloadRangeExample()
    {
        var cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;
        var containerName = "container";
        var blobName = "myfile.zip";
        int segmentSize = 1 * 1024 * 1024;//1 MB chunk
        var blobContainer = cloudStorageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
        var blob = blobContainer.GetBlockBlobReference(blobName);
        blob.FetchAttributes();
        var blobLengthRemaining = blob.Properties.Length;
        long startPosition = 0;
        string saveFileName = @"D:\myfile.zip";
        do
        {
            long blockSize = Math.Min(segmentSize, blobLengthRemaining);
            byte[] blobContents = new byte[blockSize];
            using (MemoryStream ms = new MemoryStream())
            {
                blob.DownloadRangeToStream(ms, startPosition, blockSize);
                ms.Position = 0;
                ms.Read(blobContents, 0, blobContents.Length);
                using (FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate))
                {
                    fs.Position = startPosition;
                    fs.Write(blobContents, 0, blobContents.Length);
                }
            }
            startPosition += blockSize;
            blobLengthRemaining -= blockSize;
        }
        while (blobLengthRemaining > 0);
    }

关于c# - Azure 下载 blob 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22763235/

相关文章:

azure - 在Azure中获取域验证ID的customDomainVerificationId在哪里

rest - 如何通过将 blob 拆分为 block 并使用 REST 和 PHP 调用 PutBlockList 将其上传到 windows azure

c# - 如何将所有对象从一个 IList 移动/复制到另一个

c# - 如何以编程方式查询 ravendb 中属性为 null 的文档

authentication - 如何在 Azure Multi-Tenancy 应用程序中停止同意

node.js - 使用 Azure 存储/Blob 服务设置 Azure Node.js 应用服务的最佳方式是什么

Azure - 1 'block blob' 是否被视为一个文件?

c# - 如何解决 Unable to cast object of type 'System.Data.DataView' to type 'System.Data.DataTable' ERROR

c# - RSS 提要 XMLDataSource 过滤器 RSS 项目

c# - 在 Azure Function 中覆盖 function.json 时出现问题