Hızlı Başlangıç: .NET için Azure Blob depolama istemci kitaplığıQuickstart: Azure Blob storage client library for .NET

.NET için Azure Blob depolama istemci kitaplığı 'nı kullanmaya başlayın.Get started with the Azure Blob Storage client library for .NET. Azure Blob depolama, Microsoft 'un bulut için nesne depolama çözümüdür.Azure Blob Storage is Microsoft's object storage solution for the cloud. Paketi yüklemek ve temel görevler için örnek kodu denemek için adımları izleyin.Follow steps to install the package and try out example code for basic tasks. BLOB depolama, büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir.Blob storage is optimized for storing massive amounts of unstructured data.

.NET için Azure Blob depolama istemci kitaplığı 'nı kullanarak şunları yapın:Use the Azure Blob Storage client library for .NET to:

  • Bir kapsayıcı oluşturmaCreate a container
  • Bir kapsayıcıda izinleri ayarlamaSet permissions on a container
  • Azure depolama 'da blob oluşturmaCreate a blob in Azure Storage
  • Blobu yerel bilgisayarınıza indirmeDownload the blob to your local computer
  • Bir kapsayıcıdaki tüm Blobları listelemeList all of the blobs in a container
  • Kapsayıcı silmeDelete a container

API başvurusu belge | kitaplığı kaynak kodu | paketi (NuGet) | örnekleriAPI reference documentation | Library source code | Package (NuGet) | Samples

Not

Bu makalede açıklanan özellikler yalnızca Data Lake Storage üzerindeki çoklu protokol erişiminingenel önizlemesine kaydoldıysanız hiyerarşik bir ad alanına sahip hesaplar için kullanılabilir.The features described in this article are available to accounts that have a hierarchical namespace only if you enroll in the public preview of multi-protocol access on Data Lake Storage. Sınırlamaları gözden geçirmek için, bilinen sorunlar makalesine bakın.To review limitations, see the known issues article.

Başlamadan önce gerekliRequired before you begin

AyarlanıyorSetting up

Bu bölümde, bir projeyi .NET için Azure Blob depolama istemci kitaplığıyla çalışacak şekilde hazırlama işlemi adım adım gösterilmektedir.This section walks you through preparing a project to work with the Azure Blob Storage client library for .NET.

Proje oluşturmaCreate the project

İlk olarak, blob adlı bir .NET Core uygulaması oluşturun -hızlı başlangıç.First, create a .NET Core application named blob-quickstart.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi), BLOB-QuickStartadlı yeni bir dotnet new konsol uygulaması oluşturmak için komutunu kullanın.In a console window (such as cmd, PowerShell, or Bash), use the dotnet new command to create a new console app with the name blob-quickstart. Bu komut, tek bir kaynak dosyası olan C# basit bir "Merhaba Dünya" projesi oluşturur: Program.cs.This command creates a simple "Hello World" C# project with a single source file: Program.cs.

    dotnet new console -n blob-quickstart
    
  2. Yeni oluşturulan BLOB-hızlı başlangıç klasörüne geçin ve bunların tümünün iyi olduğunu doğrulamak için uygulamayı oluşturun.Switch to the newly created blob-quickstart folder and build the app to verify that all is well.

    cd blob-quickstart
    
    dotnet build
    

Derlemeden beklenen çıktı şuna benzemelidir:The expected output from the build should look something like this:

C:\QuickStarts\blob-quickstart> dotnet build
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 44.31 ms for C:\QuickStarts\blob-quickstart\blob-quickstart.csproj.
  blob-quickstart -> C:\QuickStarts\blob-quickstart\bin\Debug\netcoreapp2.1\blob-quickstart.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.08

Paketi yüklerInstall the package

Hala uygulama dizininde, dotnet add package komutunu kullanarak .NET için Azure Blob Storage istemci kitaplığı 'nı yükleyebilirsiniz.While still in the application directory, install the Azure Blob Storage client library for .NET package by using the dotnet add package command.

dotnet add package Microsoft.Azure.Storage.Blob

Uygulama çerçevesini ayarlamaSet up the app framework

Proje dizininden:From the project directory:

  1. Program.cs dosyasını Düzenleyicinizde açınOpen the Program.cs file in your editor
  2. Console.WriteLine İfadeyi kaldırRemove the Console.WriteLine statement
  3. Yönergeler using eklemeAdd using directives
  4. Örnek için ProcessAsync ana kodun bulunacağı bir yöntem oluşturunCreate a ProcessAsync method where the main code for the example will reside
  5. ProcessAsync Yöntemi zaman uyumsuz olarak çağırınMainAsynchronously call the ProcessAsync method from Main

Kod aşağıdaki gibidir:Here's the code:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;

namespace blob_quickstart
{
    class Program
    {
        public static void Main()
        {
            Console.WriteLine("Azure Blob Storage - .NET quickstart sample\n");

            // Run the examples asynchronously, wait for the results before proceeding
            ProcessAsync().GetAwaiter().GetResult();

            Console.WriteLine("Press any key to exit the sample application.");
            Console.ReadLine();
        }

        private static async Task ProcessAsync()
        {
        }
    }
}

Azure portalından kimlik bilgilerinizi kopyalamaCopy your credentials from the Azure portal

Örnek uygulama, Azure depolama 'ya istek yaptığında yetkilendirilmiş olmalıdır.When the sample application makes a request to Azure Storage, it must be authorized. Bir isteği yetkilendirmek için, depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin.To authorize a request, add your storage account credentials to the application as a connection string. Bu adımları izleyerek depolama hesabı kimlik bilgilerinizi görüntüleyin:View your storage account credentials by following these steps:

  1. Azure portalına gidin.Navigate to the Azure portal.

  2. Depolama hesabınızı bulun.Locate your storage account.

  3. Depolama hesabına genel bakışın Ayarlar bölümünde Erişim anahtarları’nı seçin.In the Settings section of the storage account overview, select Access keys. Burada, hesap erişim anahtarlarınızı ve her anahtar için tam bağlantı dizesini görüntüleyebilirsiniz.Here, you can view your account access keys and the complete connection string for each key.

  4. key1 bölümünde Bağlantı dizesi değerini bulun ve Kopyala düğmesini seçerek bağlantı dizesini kopyalayın.Find the Connection string value under key1, and select the Copy button to copy the connection string. Sonraki adımda bir ortam değişkenine bağlantı dizesini ekleyeceksiniz.You will add the connection string value to an environment variable in the next step.

    Azure portalından bağlantı dizesinin kopyalanmasını gösteren ekran görüntüsü

Depolama bağlantı dizelerinizi yapılandırmaConfigure your storage connection string

Bağlantı dizenizi kopyaladıktan sonra uygulamayı çalıştıran yerel makine üzerindeki yeni bir ortam değişkenine yazın.After you have copied your connection string, write it to a new environment variable on the local machine running the application. Ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin yönergelerini izleyin.To set the environment variable, open a console window, and follow the instructions for your operating system. Gerçek <yourconnectionstring> bağlantı dizeniz ile değiştirin.Replace <yourconnectionstring> with your actual connection string.

WindowsWindows

setx CONNECT_STR "<yourconnectionstring>"

Windows 'a ortam değişkenini ekledikten sonra, komut penceresinin yeni bir örneğini başlatmanız gerekir.After you add the environment variable in Windows, you must start a new instance of the command window.

LinuxLinux

export CONNECT_STR="<yourconnectionstring>"

macOSMacOS

export CONNECT_STR="<yourconnectionstring>"

Ortam değişkenini ekledikten sonra, ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatın.After you add the environment variable, restart any running programs that will need to read the environment variable. Örneğin, devam etmeden önce geliştirme ortamınızı veya düzenleyiciyi yeniden başlatın.For example, restart your development environment or editor before continuing.

Nesne modeliObject model

Azure Blob depolama, büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir.Azure Blob storage is optimized for storing massive amounts of unstructured data. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanımına bağlı olmayan bir veri.Unstructured data is data that does not adhere to a particular data model or definition, such as text or binary data. BLOB depolama üç tür kaynak sunar:Blob storage offers three types of resources:

  • Depolama hesabı.The storage account.
  • Depolama hesabındaki bir kapsayıcıA container in the storage account
  • Kapsayıcıda bir blobA blob in a container

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.The following diagram shows the relationship between these resources.

BLOB depolama mimarisi diyagramı

Şu kaynaklarla etkileşim kurmak için aşağıdaki .NET sınıflarını kullanın:Use the following .NET classes to interact with these resources:

  • Cloudstorageaccount: Sınıfı CloudStorageAccount , Azure depolama hesabınızı temsil eder.CloudStorageAccount: The CloudStorageAccount class represents your Azure storage account. Bu sınıfı, hesap erişim anahtarlarınızı kullanarak blob depolamaya erişim yetkisi vermek için kullanın.Use this class to authorize access to Blob storage using your account access keys.
  • Cloudblobclient: CloudBlobClient Sınıfı, kodunuzdaki blob hizmetine bir erişim noktası sağlar.CloudBlobClient: The CloudBlobClient class provides a point of access to the Blob service in your code.
  • Cloudblobcontainer: Sınıfı CloudBlobContainer , kodunuzdaki bir blob kapsayıcısını temsil eder.CloudBlobContainer: The CloudBlobContainer class represents a blob container in your code.
  • Cloudblockblob: CloudBlockBlob Nesnesi kodunuzda bir Blok Blobu temsil eder.CloudBlockBlob: The CloudBlockBlob object represents a block blob in your code. Blok blobları, ayrı ayrı yönetilebilen veri bloklarından oluşur.Block blobs are made up of blocks of data that can be managed individually.

Kod örnekleriCode examples

Bu örnek kod parçacıkları, .NET için Azure Blob depolama istemci kitaplığı ile aşağıdakilerin nasıl gerçekleştirileceğini göstermektedir:These example code snippets show you how to perform the following with the Azure Blob storage client library for .NET:

İstemcinin kimliğini doğrulamaAuthenticate the client

Aşağıdaki kod, ortam değişkeninin depolama hesabına işaret eden bir Cloudstorageaccount nesnesi oluşturmak için ayrıştırılabilen bir bağlantı dizesi içerip içermediğini denetler.The code below checks that the environment variable contains a connection string that can be parsed to create a CloudStorageAccount object pointing to the storage account. Bağlantı dizesinin geçerli olup olmadığını denetlemek için TryParse yöntemini kullanın.To check that the connection string is valid, use the TryParse method. Başarılı TryParse olursa, storageAccount değişkenini başlatır ve döndürür true.If TryParse is successful, it initializes the storageAccount variable and returns true.

Bu kodu ProcessAsync metodun içine ekleyin:Add this code inside the ProcessAsync method:

// Retrieve the connection string for use with the application. The storage 
// connection string is stored in an environment variable on the machine 
// running the application called CONNECT_STR. If the 
// environment variable is created after the application is launched in a 
// console or with Visual Studio, the shell or application needs to be closed
// and reloaded to take the environment variable into account.
string storageConnectionString = Environment.GetEnvironmentVariable("CONNECT_STR");

// Check whether the connection string can be parsed.
CloudStorageAccount storageAccount;
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
    // If the connection string is valid, proceed with operations against Blob
    // storage here.
    // ADD OTHER OPERATIONS HERE
}
else
{
    // Otherwise, let the user know that they need to define the environment variable.
    Console.WriteLine(
        "A connection string has not been defined in the system environment variables. " +
        "Add an environment variable named 'CONNECT_STR' with your storage " +
        "connection string as a value.");
    Console.WriteLine("Press any key to exit the application.");
    Console.ReadLine();
}

Not

Bu makaledeki işlemlerin geri kalanını gerçekleştirmek için yukarıdaki kodda yer alarak aşağıdaki // ADD OTHER OPERATIONS HERE bölümlerde bulunan kod parçacıkları ile değiştirin.To perform the rest of the operations in this article, replace // ADD OTHER OPERATIONS HERE in the code above with the code snippets in the following sections.

Bir kapsayıcı oluşturmaCreate a container

Kapsayıcıyı oluşturmak için öncelikle CloudBlobClient nesnesinin depolama hesabınızdaki Blob depolama alanına işaret eden bir örneğini oluşturun.To create the container, first create an instance of the CloudBlobClient object, which points to Blob storage in your storage account. Ardından, CloudBlobContainer nesnesinin bir örneğini ve sonra kapsayıcıyı oluşturun.Next, create an instance of the CloudBlobContainer object, then create the container.

Bu durumda, kod kapsayıcıyı oluşturmak için Createasync yöntemini çağırır.In this case, the code calls the CreateAsync method to create the container. Kapsayıcı adının benzersiz olduğundan emin olmak için kapsayıcı adına bir GUID değeri eklenir.A GUID value is appended to the container name to ensure that it is unique. Bir üretim ortamında, yalnızca henüz yoksa bir kapsayıcı oluşturmak için Createifnotexistsasync yönteminin kullanılması tercih edilir.In a production environment, it's often preferable to use the CreateIfNotExistsAsync method to create a container only if it does not already exist.

Önemli

Kapsayıcı adlarının küçük harfle yazılması gerekir.Container names must be lowercase. Kapsayıcıları ve blobları adlandırma hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Bunlara Başvurma.For more information about naming containers and blobs, see Naming and Referencing Containers, Blobs, and Metadata.

// Create the CloudBlobClient that represents the 
// Blob storage endpoint for the storage account.
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

// Create a container called 'quickstartblobs' and 
// append a GUID value to it to make the name unique.
CloudBlobContainer cloudBlobContainer = 
    cloudBlobClient.GetContainerReference("quickstartblobs" + 
        Guid.NewGuid().ToString());
await cloudBlobContainer.CreateAsync();

Bir kapsayıcıda izinleri ayarlamaSet permissions on a container

Kapsayıcıdaki tüm Bloblar herkese açık olacak şekilde kapsayıcı üzerindeki izinleri ayarlayın.Set permissions on the container so that any blobs in the container are public. Bir blob herkese açık ise, herhangi bir istemci tarafından anonim olarak erişilebilir.If a blob is public, it can be accessed anonymously by any client.

// Set the permissions so the blobs are public.
BlobContainerPermissions permissions = new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
};
await cloudBlobContainer.SetPermissionsAsync(permissions);

Blobları bir kapsayıcıya yüklemeUpload blobs to a container

Aşağıdaki kod parçacığı, önceki bölümde oluşturulan kapsayıcıda CloudBlockBlob getblockblobreference yöntemini çağırarak nesnesine bir başvuru alır.The following code snippet gets a reference to a CloudBlockBlob object by calling the GetBlockBlobReference method on the container created in the previous section. Ardından, Uploadfromfileasync yöntemini çağırarak seçili yerel dosyayı bloba yükler.It then uploads the selected local file to the blob by calling the UploadFromFileAsync method. Bu yöntem, daha önce oluşturulmadıysa bir blob oluşturur, aksi takdirde üzerine yazar.This method creates the blob if it doesn't already exist, and overwrites it if it does.

// Create a file in your local MyDocuments folder to upload to a blob.
string localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string localFileName = "QuickStart_" + Guid.NewGuid().ToString() + ".txt";
string sourceFile = Path.Combine(localPath, localFileName);
// Write text to the file.
File.WriteAllText(sourceFile, "Hello, World!");

Console.WriteLine("Temp file = {0}", sourceFile);
Console.WriteLine("Uploading to Blob storage as blob '{0}'", localFileName);

// Get a reference to the blob address, then upload the file to the blob.
// Use the value of localFileName for the blob name.
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(localFileName);
await cloudBlockBlob.UploadFromFileAsync(sourceFile);

Blob’ları bir kapsayıcıda listelemeList the blobs in a container

ListBlobsSegmentedAsync yöntemini kullanarak kapsayıcıdaki Blobları listeleyin.List the blobs in the container by using the ListBlobsSegmentedAsync method. Bu durumda, kapsayıcıya yalnızca bir blob eklenmiş, bu nedenle listeleme işlemi yalnızca bir BLOB döndürüyor.In this case, only one blob has been added to the container, so the listing operation returns just that one blob.

Tek bir çağrıda döndürülecek çok fazla BLOB varsa (varsayılan olarak 5000 ' den fazla), ListBlobsSegmentedAsync yöntemi Toplam sonuç kümesinin ve devamlılık belirtecinin bir segmentini döndürür.If there are too many blobs to return in one call (by default, more than 5000), then the ListBlobsSegmentedAsync method returns a segment of the total result set and a continuation token. Blobların sonraki segmentini almak için, devamlılık belirteci null olana kadar önceki çağrı tarafından döndürülen devamlılık belirtecini art arda sağlayın.To retrieve the next segment of blobs, you provide in the continuation token returned by the previous call, and so on, until the continuation token is null. Null devamlılık belirteci tüm blobların alındığını gösterir.A null continuation token indicates that all of the blobs have been retrieved. Kod, en iyi uygulamalar için devamlılık belirtecinin nasıl kullanılacağını gösterir.The code shows how to use the continuation token for the sake of best practices.

// List the blobs in the container.
Console.WriteLine("List blobs in container.");
BlobContinuationToken blobContinuationToken = null;
do
{
    var results = await cloudBlobContainer.ListBlobsSegmentedAsync(null, blobContinuationToken);
    // Get the value of the continuation token returned by the listing call.
    blobContinuationToken = results.ContinuationToken;
    foreach (IListBlobItem item in results.Results)
    {
        Console.WriteLine(item.Uri);
    }
} while (blobContinuationToken != null); // Loop while the continuation token is not null.

Blob’ları indirmeDownload blobs

Daha önce oluşturulan blobu, Downloadtofileasync yöntemini kullanarak yerel dosya sisteminize indirin.Download the blob created previously to your local file system by using the DownloadToFileAsync method. Örnek kod, yerel dosya sisteminde her iki dosyayı da görebilmeniz için blob adına "_DOWNLOADED" sonekini ekler.The example code adds a suffix of "_DOWNLOADED" to the blob name so that you can see both files in local file system.

// Download the blob to a local file, using the reference created earlier.
// Append the string "_DOWNLOADED" before the .txt extension so that you 
// can see both files in MyDocuments.
string destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt");
Console.WriteLine("Downloading blob to {0}", destinationFile);
await cloudBlockBlob.DownloadToFileAsync(destinationFile, FileMode.Create);

Kapsayıcı silmeDelete a container

Aşağıdaki kod, Cloudblobcontainer. DeleteAsynckullanarak tüm kapsayıcıyı silerek uygulamanın oluşturduğu kaynakları temizler.The following code cleans up the resources the app created by deleting the entire container using CloudBlobContainer.DeleteAsync. Ayrıca isterseniz yerel dosyaları silebilirsiniz.You can also delete the local files if you like.

Console.WriteLine("Press the 'Enter' key to delete the example files, " +
    "example container, and exit the application.");
Console.ReadLine();
// Clean up resources. This includes the container and the two temp files.
Console.WriteLine("Deleting the container");
if (cloudBlobContainer != null)
{
    await cloudBlobContainer.DeleteIfExistsAsync();
}
Console.WriteLine("Deleting the source, and downloaded files");
File.Delete(sourceFile);
File.Delete(destinationFile);

Kodu çalıştırmaRun the code

Bu uygulama yerel MyDocuments klasörünüzde bir sınama dosyası oluşturur ve BLOB depolama alanına yükler.This app creates a test file in your local MyDocuments folder and uploads it to Blob storage. Örnek daha sonra kapsayıcıdaki Blobları listeler ve eski ve yeni dosyaları karşılaştırabilmeniz için dosyayı yeni bir adla indirir.The example then lists the blobs in the container and downloads the file with a new name so that you can compare the old and new files.

Uygulama dizininize gidip uygulamayı derleyin ve çalıştırın.Navigate to your application directory, then build and run the application.

dotnet build
dotnet run

Örnek uygulamanın çıktısı aşağıdaki örneğe benzer:The output of the example application is similar to the following example:

Azure Blob storage - .NET Quickstart example

Created container 'quickstartblobs33c90d2a-eabd-4236-958b-5cc5949e731f'

Temp file = C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926-a9da-96
97c748f4db.txt
Uploading to Blob storage as blob 'QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f
4db.txt'

Listing blobs in container.
https://storagesamples.blob.core.windows.net/quickstartblobs33c90d2a-eabd-4236-
958b-5cc5949e731f/QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.txt

Downloading blob to C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926
-a9da-9697c748f4db_DOWNLOADED.txt

Press any key to delete the example files and example container.

Devam etmek için Enter tuşuna bastığınızda uygulama, depolama kapsayıcısını ve dosyaları siler.When you press the Enter key, the application deletes the storage container and the files. Silmeden önce, MyDocuments klasörünüzde iki dosyayı denetleyin.Before you delete them, check your MyDocuments folder for the two files. Dosyaları açarak aynı olduklarını görebilirsiniz.You can open them and observe that they are identical. Konsol penceresinden blob URL’sini kopyalayıp tarayıcıya yapıştırarak blobun içeriğini görüntüleyin.Copy the blob's URL from the console window and paste it into a browser to view the contents of the blob.

Dosyaları doğruladıktan sonra, tanıtımı tamamlamak ve test dosyalarını silmek için herhangi bir tuşa basın.After you've verified the files, hit any key to finish the demo and delete the test files.

Sonraki adımlarNext steps

Bu hızlı başlangıçta .NET kullanarak blobları karşıya yükleme, indirme ve listeleme hakkında bilgi edindiniz.In this quickstart, you learned how to upload, download, and list blobs using .NET.

Blob depolamaya görüntü yükleyen bir Web uygulamasının nasıl oluşturulacağını öğrenmek için şu işleme devam edin:To learn how to create a web app that uploads an image to Blob storage, continue to: