Pobieranie obiektu blob za pomocą platformy .NET

W tym artykule pokazano, jak pobrać obiekt blob przy użyciu biblioteki klienta usługi Azure Storage dla platformy .NET. Dane obiektów blob można pobrać do różnych miejsc docelowych, w tym ścieżkę pliku lokalnego, strumień lub ciąg tekstowy. Możesz również otworzyć strumień obiektów blob i odczytać go.

Wymagania wstępne

  • W tym artykule założono, że masz już skonfigurowany projekt do pracy z biblioteką klienta Azure Blob Storage dla platformy .NET. Aby dowiedzieć się więcej na temat konfigurowania projektu, w tym instalacji pakietu, dodawania using dyrektyw i tworzenia autoryzowanego obiektu klienta, zobacz Wprowadzenie do Azure Blob Storage i platformy .NET.
  • Mechanizm autoryzacji musi mieć uprawnienia do wykonywania operacji pobierania. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla następującej operacji interfejsu API REST:

Pobieranie obiektu blob

Aby pobrać obiekt blob, możesz użyć dowolnej z następujących metod:

Możesz również otworzyć strumień do odczytu z obiektu blob. Strumień pobiera tylko obiekt blob, ponieważ strumień jest odczytywany. Możesz to zrobić na jeden z następujących sposobów:

Pobieranie do ścieżki pliku

Poniższy przykład pobiera obiekt blob do lokalnej ścieżki pliku. Jeśli określony katalog nie istnieje, kod zgłasza wyjątek DirectoryNotFoundException. Jeśli plik już istnieje w lokalizacji localFilePath, jest on domyślnie zastępowany podczas kolejnych pobierania.

public static async Task DownloadBlobToFileAsync(
    BlobClient blobClient,
    string localFilePath)
{
    await blobClient.DownloadToAsync(localFilePath);
}

Pobieranie do strumienia

Poniższy przykład pobiera obiekt blob przez utworzenie obiektu Stream , a następnie pobranie go do tego strumienia. Jeśli określony katalog nie istnieje, kod zgłasza wyjątek DirectoryNotFoundException.

public static async Task DownloadBlobToStreamAsync(
    BlobClient blobClient,
    string localFilePath)
{
    FileStream fileStream = File.OpenWrite(localFilePath);

    await blobClient.DownloadToAsync(fileStream);

    fileStream.Close();
}

Pobieranie do ciągu

W poniższym przykładzie założono, że obiekt blob jest plikiem tekstowym i pobiera obiekt blob do ciągu:

public static async Task DownloadBlobToStringAsync(BlobClient blobClient)
{
    BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync();
    string blobContents = downloadResult.Content.ToString();
}

Pobieranie ze strumienia

Poniższy przykład pobiera obiekt blob, odczytując ze strumienia:

public static async Task DownloadBlobFromStreamAsync(
    BlobClient blobClient,
    string localFilePath)
{
    using (var stream = await blobClient.OpenReadAsync())
    {
        FileStream fileStream = File.OpenWrite(localFilePath);
        await stream.CopyToAsync(fileStream);
    }
}

Pobieranie blokowego obiektu blob z opcjami konfiguracji

Opcje konfiguracji biblioteki klienta można zdefiniować podczas pobierania obiektu blob. Te opcje można dostosować, aby zwiększyć wydajność i zwiększyć niezawodność. W poniższych przykładach kodu pokazano, jak używać obiektów BlobDownloadToOptions do definiowania opcji konfiguracji podczas wywoływania metody pobierania. Należy pamiętać, że te same opcje są dostępne dla obiektów BlobDownloadOptions.

Określanie opcji transferu danych podczas pobierania

Wartości w obszarze StorageTransferOptions można skonfigurować, aby zwiększyć wydajność operacji transferu danych. Poniższy przykład kodu pokazuje, jak ustawić wartości dla StorageTransferOptions i uwzględnić opcje w ramach BlobDownloadToOptions wystąpienia. Wartości podane w tym przykładzie nie są przeznaczone do bycia zaleceniem. Aby prawidłowo dostosować te wartości, należy wziąć pod uwagę konkretne potrzeby aplikacji.

public static async Task DownloadBlobWithTransferOptionsAsync(
    BlobClient blobClient,
    string localFilePath)
{
    FileStream fileStream = File.OpenWrite(localFilePath);

    var transferOptions = new StorageTransferOptions
    {
        // Set the maximum number of parallel transfer workers
        MaximumConcurrency = 2,

        // Set the initial transfer length to 8 MiB
        InitialTransferSize = 8 * 1024 * 1024,

        // Set the maximum length of a transfer to 4 MiB
        MaximumTransferSize = 4 * 1024 * 1024
    };

    BlobDownloadToOptions downloadOptions = new BlobDownloadToOptions()
    {
        TransferOptions = transferOptions
    };

    await blobClient.DownloadToAsync(fileStream, downloadOptions);

    fileStream.Close();
}

Aby dowiedzieć się więcej na temat dostrajania opcji transferu danych, zobacz Dostrajanie wydajności dla przekazywania i pobierania.

Określanie opcji weryfikacji transferu podczas pobierania

Możesz określić opcje weryfikacji transferu, aby upewnić się, że dane są pobierane prawidłowo i nie zostały naruszone podczas przesyłania. Opcje weryfikacji transferu można zdefiniować na poziomie klienta przy użyciu obiektów BlobClientOptions, które stosują opcje weryfikacji do wszystkich metod wywoływanych z wystąpienia obiektu BlobClient .

Możesz również zastąpić opcje walidacji transferu na poziomie metody przy użyciu obiektów BlobDownloadToOptions. W poniższym przykładzie kodu pokazano, jak utworzyć BlobDownloadToOptions obiekt i określić algorytm generowania sumy kontrolnej. Suma kontrolna jest następnie używana przez usługę do weryfikowania integralności danych pobranej zawartości.

public static async Task DownloadBlobWithChecksumAsync(
    BlobClient blobClient,
    string localFilePath)
{
    FileStream fileStream = File.OpenWrite(localFilePath);

    var validationOptions = new DownloadTransferValidationOptions
    {
        AutoValidateChecksum = true,
        ChecksumAlgorithm = StorageChecksumAlgorithm.Auto
    };

    BlobDownloadToOptions downloadOptions = new BlobDownloadToOptions()
    {
        TransferValidation = validationOptions
    };

    await blobClient.DownloadToAsync(fileStream, downloadOptions);

    fileStream.Close();
}

W poniższej tabeli przedstawiono dostępne opcje algorytmu sumy kontrolnej, zgodnie z definicją storageChecksumAlgorithm:

Nazwa Wartość Opis
Auto 0 Zalecane. Umożliwia bibliotece wybór algorytmu. Różne wersje biblioteki mogą wybierać różne algorytmy.
Brak 1 Brak wybranego algorytmu. Nie obliczaj sum kontrolnych ani nie żądaj ich.
MD5 2 Standardowy algorytm skrótu MD5.
StorageCrc64 3 Niestandardowe 64-bitowe CRC usługi Azure Storage.

Zasoby

Aby dowiedzieć się więcej na temat pobierania obiektów blob przy użyciu biblioteki klienta Azure Blob Storage dla platformy .NET, zobacz następujące zasoby.

Operacje interfejsu API REST

Zestaw Azure SDK dla platformy .NET zawiera biblioteki oparte na interfejsie API REST platformy Azure, które umożliwiają interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów platformy .NET. Metody biblioteki klienta do pobierania obiektów blob używają następującej operacji interfejsu API REST:

Przykłady kodu

Zasoby biblioteki klienta

Zobacz też