【问题标题】:Azure download blob partAzure 下载 blob 部分
【发布时间】:2014-05-10 21:21:46
【问题描述】:

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

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

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

感谢您的帮助

【问题讨论】:

    标签: c# azure azure-storage


    【解决方案1】:

    试试这个代码。它通过将其拆分为 1 MB 块来下载一个大 blob。

        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);
        }
    

    【讨论】:

    • @Guarav Mantri... 内存流在using语句中被处理掉,如何分段下载大文件并返回整个内存流?我尝试删除 using 语句并添加 ms.Writeasync(blobContents) 但返回时 ms 仍然为空
    猜你喜欢
    • 2016-06-20
    • 2017-09-10
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2019-12-19
    • 2019-09-05
    相关资源
    最近更新 更多