Hızlı Başlangıç: NET'i kullanarak nesne depolamada blob oluşturmaQuickstart: Use .NET to create a blob in object storage

Bu hızlı başlangıçta, Blob (nesne) depolama alanında bir blob ve kapsayıcı oluşturmak amacıyla .NET için Azure Depolama istemci kitaplığının nasıl kullanılacağını öğreneceksiniz.In this quickstart, you learn how to use the Azure Storage client library for .NET to create a container and a blob in Blob (object) storage. Ardından, blob’u yerel bilgisayarınıza indirmeyi ve bir kapsayıcıdaki tüm blobların listesini görüntülemeyi öğreneceksiniz.Next, you learn how to download the blob to your local computer, and how to list all of the blobs in a container.

ÖnkoşullarPrerequisites

Azure depolamaya erişmek için bir Azure aboneliği gerekir.To access Azure Storage, you'll need an Azure subscription. Bir aboneliğiniz zaten yoksa, oluşturup bir ücretsiz bir hesap başlamadan önce.If you don't already have a subscription, then create a free account before you begin.

Tüm Azure depolama erişimi bir depolama hesabı üzerinden gerçekleşir.All access to Azure Storage takes place through a storage account. Bu hızlı başlangıçta kullanarak bir depolama hesabı oluşturma Azure portalında, Azure PowerShell veya Azure CLI.For this quickstart, create a storage account using the Azure portal, Azure PowerShell, or Azure CLI. Hesap oluşturmayla ilgili yardım için bkz. Depolama hesabı oluşturma.For help creating the account, see Create a storage account.

Ardından, indirin ve işletim sisteminiz için .NET Core 2.1 yükleyin.Next, download and install .NET Core 2.1 for your operating system. Windows kullanıyorsanız, isterseniz Visual Studio yükleyip .NET Framework kullanabilirsiniz.If you are running Windows, you can install Visual Studio and use the .NET Framework if you prefer. Ayrıca, işletim sisteminizle birlikte kullanmak için bir düzenleyici yüklemeyi seçebilirsiniz.You can also choose to install an editor to use with your operating system.

.NET Core ve .NET Framework arasında seçim yapma hakkında bilgi için bkz: Sunucu uygulamaları için .NET Framework ve .NET Core arasında seçim yapma.For information about choosing between .NET Core and the .NET Framework, see Choose between .NET Core and .NET Framework for server apps.

Örnek uygulamayı indirin:Download the sample application

Bu hızlı başlangıçta kullanılan örnek uygulama, temel bir konsol uygulamasıdır.The sample application used in this quickstart is a basic console application. GitHub üzerindeki örnek uygulamayı inceleyebilirsiniz.You can explore the sample application on GitHub.

Uygulamanın bir kopyasını geliştirme ortamınıza indirmek için Git'i kullanın.Use git to download a copy of the application to your development environment.

git clone https://github.com/Azure-Samples/storage-blobs-dotnet-quickstart.git

Bu komut, depoyu yerel Git klasörünüze kopyalar.This command clones the repository to your local git folder. Visual Studio çözümünü açmak için, storage-blobs-dotnet-quickstart klasörünü bulun, açın ve storage-blobs-dotnet-quickstart.sln'ye çift tıklayın.To open the Visual Studio solution, look for the storage-blobs-dotnet-quickstart folder, open it, and double-click on storage-blobs-dotnet-quickstart.sln.

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

Örnek uygulamanın, depolama hesabınıza erişim için kimlik doğrulaması gerçekleştirmesi gerekir.The sample application needs to authenticate access to your storage account. Kimlik doğrulaması gerçekleştirmek için, depolama hesabınızın kimlik bilgilerini uygulamaya bir bağlantı dizesi olarak ekleyin.To authenticate, 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

Uygulamayı çalıştırmak istiyorsanız, depolama hesabınız için bağlantı dizesi sağlamanız gerekir.To run the application, you must provide the connection string for your storage account. Örnek uygulama, bağlantı dizesini ortam değişkeninden okur ve Azure Depolama’ya yönelik istekleri yetkilendirmek için bu dizeyi kullanır.The sample application reads the connection string from an environment variable and uses it to authorize requests to Azure Storage.

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. <yourconnectionstring> değerini gerçek bağlantı dizenizle değiştirin:Replace <yourconnectionstring> with your actual connection string:

setx storageconnectionstring "<yourconnectionstring>"

Ortam değişkenini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatmanız gerekebilir.After you add the environment variable, you may need to restart any running programs that will need to read the environment variable, including the console window. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio’yu yeniden başlatın.For example, if you are using Visual Studio as your editor, restart Visual Studio before running the sample.

Örneği çalıştırmaRun the sample

Bu örnek, yerel MyDocuments klasörünüzde bir sınama dosyası oluşturur ve Blob depolama alanına yükler.This sample creates a test file in your local MyDocuments folder and uploads it to Blob storage. Örnek daha sonra kapsayıcı içindeki blobları listeler ve eski ve yeni dosyaları karşılaştırabilmeniz için dosyayı yeni bir adla indirir.The sample 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.

Düzenleyici olarak Visual Studio kullanıyorsanız F5 tuşuna basarak çalıştırın.If you are using Visual Studio as your editor, you can press F5 to run.

Aksi takdirde uygulama dizininize gidip dotnet run komutuyla uygulamayı çalıştırın.Otherwise, navigate to your application directory and run the application with the dotnet run command.

dotnet run

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

Azure Blob storage - .NET Quickstart sample

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

Temp file = C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.txt
Uploading to Blob storage as blob 'QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.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 sample 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. Artık örnek dosyanın ne yaptığını gördüğünüze göre, koda göz atmak için Program.cs dosyasını açabilirsiniz.Now that you know what the sample does, open the Program.cs file to look at the code.

Örnek kodu anlamaUnderstand the sample code

Ardından, nasıl çalıştığını anlayabilmeniz için örnek kodu inceleyin.Next, explore the sample code so that you can understand how it works.

Bağlantı dizesini ayrıştırmayı deneyinTry parsing the connection string

Örneğin yaptığı ilk işlem, ortam değişkeninin depolama hesabını işaret eden bir CloudStorageAccount nesnesi oluşturmak üzere ayrıştırılabilecek bir bağlantı dizesi içerip içermediğini denetlemektir.The first thing that the sample does is to check 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. TryParse başarılı olursa storageAccount değişkenini başlatır ve true değerini döndürür.If TryParse is successful, it initializes the storageAccount variable and returns true.

// 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 storageconnectionstring.
// 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("storageconnectionstring");

// 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.
    ...
}
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 'storageconnectionstring' with your storage " +
        "connection string as a value.");
    Console.WriteLine("Press any key to exit the sample application.");
    Console.ReadLine();
}

Kapsayıcı oluşturma ve izinleri ayarlamaCreate the container and set permissions

Daha sonra örnek, bir kapsayıcı oluşturur ve kapsayıcıdaki tüm blobların herkese açık olması için izinlerini ayarlar.Next, the sample creates a container and sets its permissions 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.

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 örnek, kapsayıcıyı oluşturmak için CreateAsync yöntemini çağırır.In this case, the sample 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 kapsayıcı oluştururken, yalnızca henüz mevcut değilse ve adlandırma çakışmalarını önlemek 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 and avoid naming conflicts.

Ö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();

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

Blobları kapsayıcıya yüklemeUpload blobs to the container

Ardından örnek, blok blobuna yerel bir dosya yükler.Next, the sample uploads a local file to a block blob. Kod örneği, önceki bölümde oluşturulan kapsayıcı üzerinde GetBlockBlobReference yöntemini çağırarak bir CloudBlockBlob nesnesine başvuru alır.The code example gets a reference to a CloudBlockBlob object by calling the GetBlockBlobReference method on the container created in the previous section. Daha sonra UploadFromFileAsync yöntemini çağırarak seçili dosyayı bloba yükler.It then uploads the selected 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";
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

Örnek, ListBlobsSegmentedAsync yöntemini kullanarak blobları kapsayıcıda listeler.The sample lists the blobs in the container using the ListBlobsSegmentedAsync method. Örnek söz konusu olduğunda, kapsayıcıya yalnızca bir blob eklendiği için listeleme işlemi yalnızca bir blob döndürür.In the case of the sample, only one blob has been added to the container, so the listing operation returns just that one blob.

Tek çağrıda döndürülecek çok fazla sayıda blob (varsayılan olarak 5000'den fazla) varsa, ListBlobsSegmentedAsync yöntemi toplam sonuç kümesinin bir segmentini ve bir devamlılık belirtecini 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. Örnek kod, en iyi uygulamalar için devamlılık belirtecinin nasıl kullanılacağını gösterir.The sample 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

Sonra örnek, daha önce oluşturulan blobu DownloadToFileAsync yöntemini kullanarak yerel dosya sisteminize indirir.Next, the sample downloads the blob created previously to your local file system using the DownloadToFileAsync method. Örnek kod, her iki dosyayı da yerel dosya sisteminde görebilmeniz için blob adına "_DOWNLOADED" son ekini ekler.The sample 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.
destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt");
Console.WriteLine("Downloading blob to {0}", destinationFile);
await cloudBlockBlob.DownloadToFileAsync(destinationFile, FileMode.Create);  

Kaynakları temizlemeClean up resources

Örnek, CloudBlobContainer.DeleteAsync ile tüm kapsayıcıyı silerek oluşturduğu kaynakları temizler.The sample cleans up the resources that it 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 sample 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);

Bloblarla .NET uygulamaları geliştirme kaynaklarıResources for developing .NET applications with blobs

Blob depolama ile .NET geliştirmeye yönelik şu ek kaynaklara bakın:See these additional resources for .NET development with Blob storage:

İkili dosyalar ve kaynak koduBinaries and source code

İstemci kitaplığı başvurusu ve örnekleriClient library reference and samples

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 depolama alanına görüntü yükleyen bir web uygulamasının nasıl oluşturulacağını öğrenmek için devam edin:To learn how to create a web app that uploads an image to Blob storage, continue to: