Schnellstart: Erstellen eines Blobs im Objektspeicher mithilfe von .NETQuickstart: Use .NET to create a blob in object storage

In dieser Schnellstartanleitung erfahren Sie, wie mithilfe der Azure Storage-Clientbibliothek für .NET ein Container und ein Blob in Blob Storage (Objekt) erstellt werden.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. Als Nächstes erfahren Sie, wie Sie den Blob auf Ihren lokalen Computer herunterladen, und wie Sie alle Blobs in einem Container auflisten.Next, you learn how to download the blob to your local computer, and how to list all of the blobs in a container.

VoraussetzungenPrerequisites

Sie benötigen ein Azure-Abonnement, um auf Azure Storage zuzugreifen.To access Azure Storage, you'll need an Azure subscription. Wenn Sie noch kein Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't already have a subscription, then create a free account before you begin.

Der gesamte Zugriff auf Azure Storage erfolgt über ein Speicherkonto.All access to Azure Storage takes place through a storage account. Für diesen Schnellstart erstellen Sie über das Azure-Portal mithilfe von Azure PowerShell oder über die Azure-Befehlszeilenschnittstelle ein Speicherkonto.For this quickstart, create a storage account using the Azure portal, Azure PowerShell, or Azure CLI. Hilfe zur Erstellung des Kontos finden Sie unter Erstellen eines Speicherkontos.For help creating the account, see Create a storage account.

Laden Sie als Nächstes .NET Core 2.0 für Ihr Betriebssystem herunter, und führen Sie die Installation durch.Next, download and install .NET Core 2.0 for your operating system. Beim Ausführen von Windows können Sie Visual Studio installieren und bei Bedarf .NET Framework verwenden.If you are running Windows, you can install Visual Studio and use the .NET Framework if you prefer. Sie können auch einen Editor für die Verwendung mit Ihrem Betriebssystem installieren.You can also choose to install an editor to use with your operating system.

Informationen zur Wahl zwischen .NET Core und .NET Framework finden Sie unter Wahl zwischen .NET Core und .NET Framework für Server-Apps.For information about choosing between .NET Core and the .NET Framework, see Choose between .NET Core and .NET Framework for server apps.

Herunterladen der BeispielanwendungDownload the sample application

Die in diesem Schnellstart verwendete Beispielanwendung ist eine einfache Konsolenanwendung.The sample application used in this quickstart is a basic console application. Sie können die Beispielanwendung auf GitHub erkunden.You can explore the sample application on GitHub.

Verwenden Sie Git, um eine Kopie der Anwendung in Ihre Entwicklungsumgebung herunterzuladen.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

Mit diesem Befehl wird das Repository in Ihren lokalen Git-Ordner geklont.This command clones the repository to your local git folder. Suchen Sie zum Öffnen der Visual Studio-Projektmappe nach dem Ordner storage-blobs-dotnet-quickstart, öffnen Sie ihn, und doppelklicken Sie auf storage-blobs-dotnet-quickstart.sln.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.

Kopieren Ihrer Anmeldeinformationen aus dem Azure-PortalCopy your credentials from the Azure portal

Die Beispielanwendung muss den Zugriff auf Ihr Speicherkonto authentifizieren.The sample application needs to authenticate access to your storage account. Fügen Sie zum Authentifizieren der Anwendung die Anmeldeinformationen für Ihr Speicherkonto in Form einer Verbindungszeichenfolge hinzu.To authenticate, add your storage account credentials to the application as a connection string. Führen Sie zum Anzeigen der Anmeldeinformationen Ihres Speicherkontos die folgenden Schritte aus:View your storage account credentials by following these steps:

  1. Navigieren Sie zum Azure-Portal.Navigate to the Azure portal.

  2. Suchen Sie nach Ihrem Speicherkonto.Locate your storage account.

  3. Wählen Sie im Abschnitt Einstellungen der Speicherkontoübersicht die Option Zugriffsschlüssel.In the Settings section of the storage account overview, select Access keys. Hier können Sie Ihre Kontozugriffsschlüssel und die vollständige Verbindungszeichenfolge für jeden Schlüssel anzeigen.Here, you can view your account access keys and the complete connection string for each key.

  4. Suchen Sie unter key1 nach dem Wert für die Verbindungszeichenfolge, und wählen Sie dann die Schaltfläche Kopieren, um die Verbindungszeichenfolge zu kopieren.Find the Connection string value under key1, and select the Copy button to copy the connection string. Der Wert der Verbindungszeichenfolge wird in einem späteren Schritt einer Umgebungsvariablen hinzugefügt.You will add the connection string value to an environment variable in the next step.

    Screenshot: Kopieren einer Verbindungszeichenfolge aus dem Azure-Portal

Konfigurieren der SpeicherverbindungszeichenfolgeConfigure your storage connection string

Zum Ausführen der Anwendung müssen Sie die Verbindungszeichenfolge für das Speicherkonto angeben.To run the application, you must provide the connection string for your storage account. Die Beispielanwendung liest die Verbindungszeichenfolge aus einer Umgebung und verwendet sie zum Autorisieren von Anforderungen an Azure Storage.The sample application reads the connection string from an environment variable and uses it to authorize requests to Azure Storage.

Schreiben Sie die Verbindungszeichenfolge nach dem Kopieren in eine neue Umgebungsvariable auf dem lokalen Computer, auf dem die Anwendung ausgeführt wird.After you have copied your connection string, write it to a new environment variable on the local machine running the application. Öffnen Sie zum Festlegen der Umgebungsvariablen ein Konsolenfenster, und befolgen Sie die Anleitung für Ihr Betriebssystem.To set the environment variable, open a console window, and follow the instructions for your operating system. Ersetzen Sie <yourconnectionstring> durch Ihre Verbindungszeichenfolge:Replace <yourconnectionstring> with your actual connection string:

setx storageconnectionstring "<yourconnectionstring>"

Nachdem Sie die Umgebungsvariable hinzugefügt haben, müssen Sie unter Umständen alle ausgeführten Programme neu starten, von denen die Umgebungsvariable gelesen werden muss, z.B. das Konsolenfenster.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. Wenn Sie beispielsweise Visual Studio als Editor verwenden, müssen Sie Visual Studio neu starten, bevor Sie das Beispiel ausführen.For example, if you are using Visual Studio as your editor, restart Visual Studio before running the sample.

Ausführen des BeispielsRun the sample

In diesem Beispiel wird in Ihrem lokalen Ordner MyDocuments eine Testdatei erstellt und in Blobspeicher hochgeladen.This sample creates a test file in your local MyDocuments folder and uploads it to Blob storage. Anschließend werden im Beispiel die Blobs im Container aufgelistet, und die Datei wird mit einem neuen Namen heruntergeladen, damit Sie die alte und neue Datei vergleichen können.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.

Wenn Sie Visual Studio als Editor verwenden, können Sie F5 drücken, um die Ausführung zu starten.If you are using Visual Studio as your editor, you can press F5 to run.

Navigieren Sie andernfalls zu Ihrem Anwendungsverzeichnis, und führen Sie die Anwendung mit dem Befehl dotnet run aus.Otherwise, navigate to your application directory and run the application with the dotnet run command.

dotnet run

Die Ausgabe der Beispielanwendung ähnelt dem folgenden Beispiel: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.

Wenn Sie die EINGABETASTE drücken, löscht die Anwendung den Speichercontainer und die Dateien.When you press the Enter key, the application deletes the storage container and the files. Überprüfen Sie den Ordner MyDocuments vor dem Löschen auf die beiden Dateien.Before you delete them, check your MyDocuments folder for the two files. Sie können sie öffnen und sich vergewissern, dass sie identisch sind.You can open them and observe that they are identical. Kopieren Sie die Blob-URL aus dem Konsolenfenster, und fügen Sie sie in einen Browser ein, um den Blobinhalt anzuzeigen.Copy the blob's URL from the console window and paste it into a browser to view the contents of the blob.

Nachdem Sie die Dateien erfolgreich überprüft haben, drücken Sie eine beliebige Taste, um die Demo zu beenden und die Testdateien zu löschen.After you've verified the files, hit any key to finish the demo and delete the test files. Da Sie jetzt wissen, welche Aktionen das Beispiel ausführt, öffnen Sie die Datei „Program.cs“, um den Code zu betrachten.Now that you know what the sample does, open the Program.cs file to look at the code.

Grundlagen des BeispielcodesUnderstand the sample code

Erkunden Sie als Nächstes den Beispielcode, um sich mit der Funktionsweise vertraut zu machen.Next, explore the sample code so that you can understand how it works.

Versuchtes Analysieren der VerbindungszeichenfolgeTry parsing the connection string

Im Beispiel wird als Erstes überprüft, ob die Umgebungsvariable eine Verbindungszeichenfolge enthält, die analysiert werden kann, um ein CloudStorageAccount-Objekt zu erstellen, das auf das Speicherkonto verweist.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. Verwenden Sie die TryParse-Methode, um zu überprüfen, ob die Verbindungszeichenfolge gültig ist.To check that the connection string is valid, use the TryParse method. Wenn TryParse erfolgreich ist, wird die Variable storageAccount initialisiert, und true wird zurückgegeben.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();
}

Erstellen des Containers und Festlegen von BerechtigungenCreate the container and set permissions

Als Nächstes wird ein Container erstellt, und die Berechtigungen dafür werden so festgelegt, dass alle Blobs im Container öffentlich sind.Next, the sample creates a container and sets its permissions so that any blobs in the container are public. Wenn ein Blob öffentlich ist, kann darauf über jeden Client anonym zugegriffen werden.If a blob is public, it can be accessed anonymously by any client.

Erstellen Sie bei der Containererstellung zuerst eine Instanz des CloudBlobClient-Objekts, das auf Blobspeicher in Ihrem Speicherkonto verweist.To create the container, first create an instance of the CloudBlobClient object, which points to Blob storage in your storage account. Erstellen Sie als Nächstes eine Instanz des CloudBlobContainer-Objekts und anschließend den Container.Next, create an instance of the CloudBlobContainer object, then create the container.

In diesem Fall wird im Beispiel die CreateAsync-Methode aufgerufen, um den Container zu erstellen.In this case, the sample calls the CreateAsync method to create the container. Ein GUID-Wert wird an den Containernamen angehängt, um sicherzustellen, dass er eindeutig ist.A GUID value is appended to the container name to ensure that it is unique. In einer Produktionsumgebung ist es häufig besser, die CreateIfNotExistsAsync-Methode nur dann zum Erstellen eines Containers zu nutzen, wenn er nicht bereits vorhanden ist, um Namenskonflikte zu vermeiden.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.

Wichtig

Die Containernamen müssen klein geschrieben werden.Container names must be lowercase. Weitere Informationen zum Benennen von Containern und Blobs finden Sie unter Naming and Referencing Containers, Blobs, and Metadata (Benennen von Containern, Blobs und Metadaten und Verweisen auf diese).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);

Hochladen von Blobs in den ContainerUpload blobs to the container

Als Nächstes wird im Beispiel eine lokale Datei in ein Blockblob hochgeladen.Next, the sample uploads a local file to a block blob. Im Codebeispiel wird ein Verweis auf ein CloudBlockBlob-Objekt abgerufen, indem die GetBlockBlobReference-Methode für den Container aufgerufen wird, der im vorherigen Abschnitt erstellt wurde.The code example gets a reference to a CloudBlockBlob object by calling the GetBlockBlobReference method on the container created in the previous section. Anschließend wird die ausgewählte Datei in das Blob hochgeladen, indem die UploadFromFileAsync-Methode aufgerufen wird.It then uploads the selected file to the blob by calling the UploadFromFileAsync method. Mit dieser Methode wird das Blob erstellt, falls es nicht vorhanden ist, oder überschrieben, sofern es bereits vorhanden ist.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);

Auflisten der Blobs in einem ContainerList the blobs in a container

Im Beispiel werden die Blobs im Container mit der ListBlobsSegmentedAsync-Methode aufgelistet.The sample lists the blobs in the container using the ListBlobsSegmentedAsync method. In diesem Beispiel wurde dem Container nur ein Blob hinzugefügt, sodass beim Auflisten auch nur ein Blob zurückgegeben wird.In the case of the sample, only one blob has been added to the container, so the listing operation returns just that one blob.

Falls die Anzahl von zurückzugebenden Blobs für einen Aufruf zu hoch ist (standardmäßig > 5000), gibt die ListBlobsSegmentedAsync-Methode ein Segment des gesamten Resultsets und ein Fortsetzungstoken zurück.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. Zum Abrufen des nächsten Blobsegments geben Sie das vom vorherigen Aufruf zurückgegebene Fortsetzungstoken an und fahren damit fort, bis das Fortsetzungstoken null ist.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. Ein Fortsetzungstoken von „null“ gibt an, dass alle Blobs abgerufen wurden.A null continuation token indicates that all of the blobs have been retrieved. Im Beispielcode wird angezeigt, wie Sie das Fortsetzungstoken im Rahmen der bewährten Methoden einsetzen.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. 

Herunterladen von BlobsDownload blobs

Als Nächstes wird im Beispiel das zuvor erstellte Blob mit der DownloadToFileAsync-Methode in Ihr lokales Dateisystem heruntergeladen.Next, the sample downloads the blob created previously to your local file system using the DownloadToFileAsync method. Im Beispielcode wird das Suffix „_DOWNLOADED“ an den Blobnamen angehängt, damit beide Dateien im lokalen Dateisystem angezeigt werden können.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);  

Bereinigen von RessourcenClean up resources

Im Beispiel werden die erstellten Ressourcen bereinigt, indem der gesamte Container per CloudBlobContainer.DeleteAsync gelöscht wird.The sample cleans up the resources that it created by deleting the entire container using CloudBlobContainer.DeleteAsync. Sie können bei Bedarf auch die lokalen Dateien löschen.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);

Ressourcen für die Entwicklung von .NET-Anwendungen mit BlobsResources for developing .NET applications with blobs

Sehen Sie sich diese zusätzlichen Ressourcen zur .NET-Entwicklung mit Blobspeicher an:See these additional resources for .NET development with Blob storage:

Binärdateien und QuellcodeBinaries and source code

Clientbibliothek – Referenz und BeispieleClient library reference and samples

Nächste SchritteNext steps

In dieser Schnellstartanleitung wurde beschrieben, wie Sie Blobs per .NET hochladen, herunterladen und auflisten.In this quickstart, you learned how to upload, download, and list blobs using .NET.

Informationen zum Erstellen einer Web-App, mit der ein Bild in Blobspeicher hochgeladen wird, erhalten Sie, wenn Sie mit Hochladen von Bilddaten in die Cloud mit Azure Storage fortfahren.To learn how to create a web app that uploads an image to Blob storage, continue to Upload image data in the cloud with Azure Storage.