.NET ile blob indirme
Bu makalede .NET için Azure Depolama istemci kitaplığını kullanarak blob indirme işlemi gösterilmektedir. Blob verilerini yerel dosya yolu, akış veya metin dizesi gibi çeşitli hedeflere indirebilirsiniz. Ayrıca blob akışını açabilir ve buradan okuyabilirsiniz.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- İşletim sisteminiz için en son .NET SDK'sı . Çalışma zamanını değil SDK'yi aldığınızdan emin olun.
Ortamınızı ayarlama
Var olan bir projeniz yoksa, bu bölümde bir projenin .NET için Azure Blob Depolama istemci kitaplığıyla çalışacak şekilde nasıl ayarlanacağı gösterilir. Adımlar arasında paket yükleme, yönergeler ekleme using
ve yetkili istemci nesnesi oluşturma yer alır. Ayrıntılar için bkz. Azure Blob Depolama ve .NET'i kullanmaya başlama.
Paketleri yükleme
Proje dizininizden komutunu kullanarak dotnet add package
Azure Blob Depolama ve Azure Identity istemci kitaplıkları için paketleri yükleyin. Azure hizmetlerine parolasız bağlantılar için Azure.Identity paketi gereklidir.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Yönerge ekleme using
Kod dosyanızın en üstüne şu using
yönergeleri ekleyin:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Bu makaledeki bazı kod örnekleri için ek using
yönergeler gerekebilir.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun. Aşağıdaki örnekte yetkilendirme için kullanarak DefaultAzureCredential
bir istemci nesnesinin nasıl oluşturulacağı gösterilmektedir:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Bir .NET uygulamasına bağımlılık ekleme için bir hizmet istemcisi kaydedebilirsiniz.
Ayrıca, belirli kapsayıcılar veya bloblar için istemci nesneleri de oluşturabilirsiniz. İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.
Yetkilendirme
Yetkilendirme mekanizması, indirme işlemini gerçekleştirmek için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilen), Azure RBAC yerleşik rolü Depolama Blob Veri Okuyucusu veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Alma (REST API) için yetkilendirme kılavuzu.
Blobu indirme
Blobu indirmek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:
Blobdan okumak için bir akış da açabilirsiniz. Akış yalnızca akış okundukça blobu indirir. Aşağıdaki yöntemlerden birini kullanabilirsiniz:
Dosya yoluna indirme
Aşağıdaki örnek blobu yerel dosya yoluna indirir. Belirtilen dizin yoksa, kod bir DirectoryNotFoundException oluşturur. dosya konumunda zaten varsa localFilePath
, sonraki indirmeler sırasında varsayılan olarak üzerine yazılır.
public static async Task DownloadBlobToFileAsync(
BlobClient blobClient,
string localFilePath)
{
await blobClient.DownloadToAsync(localFilePath);
}
Akışa indirme
Aşağıdaki örnek bir Stream nesnesi oluşturarak blobu indirir ve ardından bu akışa indirir. Belirtilen dizin yoksa, kod bir DirectoryNotFoundException oluşturur.
public static async Task DownloadBlobToStreamAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
await blobClient.DownloadToAsync(fileStream);
fileStream.Close();
}
Dizeye indirme
Aşağıdaki örnekte blob'un bir metin dosyası olduğu varsayılır ve blob bir dizeye indirilir:
public static async Task DownloadBlobToStringAsync(BlobClient blobClient)
{
BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync();
string blobContents = downloadResult.Content.ToString();
}
Akıştan indirme
Aşağıdaki örnek, bir akıştan okuyarak blobu indirir:
public static async Task DownloadBlobFromStreamAsync(
BlobClient blobClient,
string localFilePath)
{
using (var stream = await blobClient.OpenReadAsync())
{
FileStream fileStream = File.OpenWrite(localFilePath);
await stream.CopyToAsync(fileStream);
}
}
Yapılandırma seçenekleriyle blok blobu indirme
Blob indirirken istemci kitaplığı yapılandırma seçeneklerini tanımlayabilirsiniz. Bu seçenekler performansı geliştirmek ve güvenilirliği artırmak için ayarlanabilir. Aşağıdaki kod örnekleri, indirme yöntemini çağırırken yapılandırma seçeneklerini tanımlamak için BlobDownloadToOptions'ın nasıl kullanılacağını gösterir. BlobDownloadOptions için de aynı seçeneklerin kullanılabildiğini unutmayın.
İndirmede veri aktarımı seçeneklerini belirtme
Veri aktarımı işlemlerinin performansını artırmak için StorageTransferOptions içindeki değerleri yapılandırabilirsiniz. Aşağıdaki kod örneği için StorageTransferOptions
değerleri ayarlamayı ve bir örneğin parçası BlobDownloadToOptions
olarak seçenekleri eklemeyi gösterir. Bu örnekte sağlanan değerler bir öneri olarak tasarlanmamıştır. Bu değerleri düzgün ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.
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();
}
Veri aktarımı seçeneklerini ayarlama hakkında daha fazla bilgi edinmek için bkz . Karşıya yüklemeler ve indirmeler için performans ayarlama.
İndirmede aktarım doğrulama seçeneklerini belirtme
Aktarım sırasında verilerin düzgün indirildiğinden ve üzerinde oynanmadığından emin olmak için aktarım doğrulama seçeneklerini belirtebilirsiniz. Aktarım doğrulama seçenekleri, blobclient örneğinden çağrılan tüm yöntemlere doğrulama seçenekleri uygulayan BlobClientOptions kullanılarak istemci düzeyinde tanımlanabilir.
BlobDownloadToOptions kullanarak yöntem düzeyinde aktarım doğrulama seçeneklerini de geçersiz kılabilirsiniz. Aşağıdaki kod örneği, bir BlobDownloadToOptions
nesnenin nasıl oluşturulacağını ve sağlama toplamı oluşturmak için bir algoritmanın nasıl belirtileceğini gösterir. Sağlama toplamı daha sonra hizmet tarafından indirilen içeriğin veri bütünlüğünü doğrulamak için kullanılır.
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();
}
Aşağıdaki tabloda, StorageChecksumAlgorithm tarafından tanımlanan sağlama toplamı algoritması için kullanılabilir seçenekler gösterilmektedir:
Veri Akışı Adı | Değer | Açıklama |
---|---|---|
Otomatik | 0 | Önerilen. Kitaplığın bir algoritma seçmesine izin verir. Farklı kitaplık sürümleri farklı algoritmalar seçebilir. |
Hiçbiri | 1 | Seçili algoritma yok. Sağlama toplamlarını hesaplamayın veya istemeyin. |
MD5 | 2 | Standart MD5 karma algoritması. |
StorageCrc64 | 3 | Azure Depolama özel 64 bit CRC. |
Kaynaklar
.NET için Azure Blob Depolama istemci kitaplığını kullanarak blobları indirme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
REST API işlemleri
.NET için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık .NET paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Blobları indirmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:
- Blob Alma (REST API)
İstemci kitaplığı kaynakları
Ayrıca bkz.
- Karşıya yüklemeler ve indirmeler için performans ayarlama.
İlgili içerik
- Bu makale, .NET için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için .NET uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.