Майкрософт.Лазурь.Хранение.Перемещение данных не позволяет загружать большие файлы размером более 2 Гб из большого двоичного объекта azure на c#

#c# #azure

Вопрос:

 using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using Microsoft.Azure.Storage.DataMovement;
using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;

namespace SampleDownload
{
    class Program
    {
        static async Task Main(string[] args)
        {

            string accountName = "";
            string accountKey = "";
            string storageConnectionString = "DefaultEndpointsProtocol=https;AccountName="   accountName   ";AccountKey="   accountKey;
            CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);
            await Download(account);
        }

        public static string GetSourcePath()
        {
            Console.WriteLine("nProvide path for source:");
            string sourcePath = Console.ReadLine();

            return sourcePath;
        }

        public static CloudBlockBlob GetBlob(CloudStorageAccount account)
        {
            CloudBlobClient blobClient = account.CreateCloudBlobClient();

            Console.WriteLine("nProvide name of Blob container:");
            string containerName = Console.ReadLine();
            CloudBlobContainer container = blobClient.GetContainerReference(containerName);
            container.CreateIfNotExistsAsync().Wait();

            Console.WriteLine("nProvide name of new Blob:");
            string blobName = Console.ReadLine();
            CloudBlockBlob blob = container.GetBlockBlobReference(blobName);

            return blob;
        }

        public static async Task Download(CloudStorageAccount account)
        {
            string path = @"D:test.zip";
            Console.WriteLine("nTransfer started...");

            DownloadOptions downloadOptions = new DownloadOptions();

            TransferCheckpoint checkpoint = null;
            SingleTransferContext transferContext = GetSingleTransferContext(checkpoint);

            CloudBlockBlob sourceObject = GetBlob(account);
            TransferManager.Configurations.ParallelOperations = 16;
            await TransferManager.DownloadAsync(sourceObject, path, null, transferContext, CancellationToken.None);

            Console.WriteLine("nTransfer operation complete.");
        }

        public static SingleTransferContext GetSingleTransferContext(TransferCheckpoint checkpoint)
        {
            SingleTransferContext context = new SingleTransferContext(checkpoint);

            context.ProgressHandler = new Progress<TransferStatus>((progress) =>
            {
                Console.Write("rBytes transferred: {0}", progress.BytesTransferred);
            });

            return context;
        }

    }
}
 

Я пытаюсь загрузить большой файл из большого двоичного объекта azure, но с помощью Microsoft.Лазурь.Хранение.Пакет
DataMovement nuget в настоящее время я получаю различные ошибки, упомянутые ниже, при загрузке больших файлов
, он работает для небольших файлов, но не работает, когда размер файлов в GBs

  1. Перерыв
  2. Задача отменена
  3. Операция ввода-вывода была прервана либо из-за выхода из потока, либо из-за запроса приложения

Есть ли какой-нибудь способ решить эту проблему?

Комментарии:

1. задача var = TransferManager. DownloadAsync (…..); задача возврата; задача последующего вызова. Подождите(); перед выходом программы, например, после загрузки();

2. Спасибо за ответ, я пробовал использовать этот подход, но не работает

Ответ №1:

текущая проблема I исправлена для загрузки с помощью azcopy.exe предоставлено корпорацией Майкрософт

копия azcopy ‘https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt’ ‘C:myDirectorymyTextFile.txt’

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-blobs-download?toc=/azure/storage/blobs/toc.json

Комментарии:

1. Пожалуйста, добавьте дополнительные сведения, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.

2.docs.microsoft.com/en-us/azure/storage/common/….

3. вот документ Microsoft загрузите копию exe-файла и установите путь к большому двоичному объекту и локальной папке и выполните exe, он загрузит файл большого размера