Delen via


Ontwikkelen voor Azure Files met C++

Tip

Microsoft Azure Storage Explorer proberen

Microsoft Azure Storage Explorer is een gratis, zelfstandige app van Microsoft waarmee u visueel met Azure Storage-gegevens kunt werken in Windows, macOS en Linux.

Van toepassing op

Bestands sharetype SMB NFS
Standaardbestandsshares (GPv2), LRS/ZRS Ja Nee
Standaardbestandsshares (GPv2), GRS/GZRS Ja Nee
Premium bestandsshares (FileStorage), LRS/ZRS Ja Nr.

Over deze zelfstudie

In deze zelfstudie leert u hoe u basisbewerkingen uitvoert in Azure Files met behulp van C++. Als u geen ervaring hebt met Azure Files, zijn de concepten in de volgende secties handig om inzicht te krijgen in de voorbeelden. Enkele van de behandelde steekproeven zijn:

  • Azure-bestandsshares maken en verwijderen
  • Mappen maken en verwijderen
  • Een bestand uploaden, downloaden en verwijderen
  • De metagegevens voor een bestand instellen en vermelden

Notitie

Omdat Azure Files toegankelijk is via SMB, is het mogelijk om eenvoudige toepassingen te schrijven die toegang hebben tot de Azure-bestandsshare met behulp van de standaard C++ I/O-klassen en -functies. In dit artikel wordt beschreven hoe u toepassingen schrijft die gebruikmaken van de Azure Storage C++ SDK, die gebruikmaakt van de File REST API om te communiceren met Azure Files.

Vereisten

Instellen

In dit gedeelte wordt uitgelegd hoe u een project voorbereidt voor gebruik met de Azure Blob Storage-clientbibliotheek v12 voor C++.

De pakketten installeren

Met vcpkg install de opdracht wordt de Azure Storage Blobs SDK voor C++ en de benodigde afhankelijkheden geïnstalleerd:

vcpkg.exe install azure-storage-files-shares-cpp:x64-windows

Ga naar GitHub voor meer informatie om de Azure SDK voor C++ te verkrijgen en te bouwen.

Het project maken

Maak in Visual Studio een nieuwe C++-consoletoepassing voor Windows met de naam FilesShareQuickstartV12.

Dialoogvenster van Visual Studio voor het configureren van een nieuwe Windows-console-app voor C++

Kopieer uw referenties van de Azure Portal

Wanneer met de voorbeeldtoepassing een aanvraag wordt ingediend bij Azure Storage, moet deze aanvraag worden geautoriseerd. Om een aanvraag te autoriseren voegt u de referenties van uw opslagaccount toe als een verbindingsreeks. Voer de volgende stappen uit om uw opslagaccountreferenties weer te geven:

  1. Meld u aan bij het Azure-portaal.

  2. Zoek uw opslagaccount.

  3. Selecteer toegangssleutels in het menuvenster van het opslagaccount onder Beveiliging en netwerken. Hier kunt u de toegangssleutels van het account en de volledige verbindingsreeks voor elke sleutel bekijken.

    Schermopname van waar de instellingen voor de toegangssleutel zich bevinden in Azure Portal

  4. Selecteer Sleutels weergeven in het deelvenster Toegangssleutels.

  5. Zoek in de sectie key1 de waarde van de verbindingsreeks . Selecteer het pictogram Kopiëren naar klembord om de verbindingsreeks te kopiëren. In de volgende sectie voegt u de verbindingsreeks waarde toe aan een omgevingsvariabele.

    Schermopname waarin een verbindingsreeks vanuit de Azure-portal wordt gekopieerd

De opslagverbindingsreeks configureren

Nadat u de verbindingsreeks hebt gekopieerd, schrijft u deze naar een nieuwe omgevingsvariabele op de lokale computer waarop de toepassing wordt uitgevoerd. Als u de omgevingsvariabele wilt instellen, opent u een consolevenster en volgt u de aanwijzingen voor uw besturingssysteem. Vervang <yourconnectionstring> door de feitelijke verbindingsreeks.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Nadat u de omgevingsvariabele in Windows hebt toegevoegd, moet u een nieuw exemplaar van het opdrachtvenster starten.

Programma's opnieuw opstarten

Nadat u de omgevingsvariabele hebt toegevoegd, start u actieve programma's die de omgevingsvariabele moeten lezen, opnieuw. Start bijvoorbeeld uw ontwikkelomgeving of editor opnieuw op voordat u doorgaat.

Codevoorbeelden

Deze voorbeeldcodefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Azure Files Share-clientbibliotheek voor C++:

Include-bestanden toevoegen

Ga als volgt te werk vanuit de projectmap:

  1. Open het FilesShareQuickstartV12.sln-oplossingsbestand in Visual Studio.
  2. Open in Visual Studio het FilesShareQuickstartV12.cpp bronbestand.
  3. Verwijder alle code in main die automatisch is gegenereerd.
  4. Instructies toevoegen #include .
#include <iostream>
#include <stdlib.h>
#include <vector>

#include <azure/storage/files/shares.hpp>

De verbindingsreeks ophalen

De onderstaande code haalt de verbindingstekenreeks voor uw opslagaccount op van de omgevingsvariabele die is gemaakt in De opslagverbindingsreeks configureren.

Voeg deze code toe in main():

        // 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 AZURE_STORAGE_CONNECTION_STRING.
        // Note that _MSC_VER is set when using MSVC compiler.
        static const char* AZURE_STORAGE_CONNECTION_STRING = "AZURE_STORAGE_CONNECTION_STRING";
#if !defined(_MSC_VER)
        const char* connectionString = std::getenv(AZURE_STORAGE_CONNECTION_STRING);
#else
        // Use getenv_s for MSVC
        size_t requiredSize;
        getenv_s(&requiredSize, NULL, NULL, AZURE_STORAGE_CONNECTION_STRING);
        if (requiredSize == 0) {
            throw std::runtime_error("missing connection string from env.");
        }
        std::vector<char> value(requiredSize);
        getenv_s(&requiredSize, value.data(), value.size(), AZURE_STORAGE_CONNECTION_STRING);
        std::string connectionStringStr = std::string(value.begin(), value.end());
        const char* connectionString = connectionStringStr.c_str();
#endif

Een bestandsshare maken

Maak een exemplaar van de ShareClient-klasse door de functie CreateFromConnectionString aan te roepen. Roep vervolgens CreateIfNotExists aan om de werkelijke bestandsshare in uw opslagaccount te maken.

Voeg deze code toe aan het einde van main():

using namespace Azure::Storage::Files::Shares;

std::string shareName = "sample-share";

// Initialize a new instance of ShareClient
auto shareClient = ShareClient::CreateFromConnectionString(connectionString, shareName);

// Create the files share. This will do nothing if the files share already exists.
std::cout << "Creating files share: " << shareName << std::endl;
shareClient.CreateIfNotExists();

Bestanden uploaden naar een bestandsshare

Het volgende codefragment:

  1. Declareert een tekenreeks die ‘Hello Azure!’ bevat.
  2. Haalt een verwijzing naar een ShareFileClient-object op door de hoofdmap ShareDirectoryClient op te halen en vervolgens GetFileClient aan te roepen op de bestandsshare vanuit de sectie Een bestandsshare maken.
  3. Hiermee wordt de tekenreeks naar het bestand geüpload door de functie UploadFrom aan te roepen. Met deze functie wordt het bestand gemaakt als het nog niet bestaat of wordt het bijgewerkt als dit wel het geval is.

Voeg deze code toe aan het einde van main():

std::string fileName = "sample-file";
uint8_t fileContent[] = "Hello Azure!";

// Create the ShareFileClient
ShareFileClient fileClient = shareClient.GetRootDirectoryClient().GetFileClient(fileName);

// Upload the file
std::cout << "Uploading file: " << fileName << std::endl;
fileClient.UploadFrom(fileContent, sizeof(fileContent));

De metagegevens van een bestand instellen

Stel de metagegevenseigenschappen voor een bestand in door de functie ShareFileClient.SetMetadata aan te roepen.

Voeg deze code toe aan het einde van main():

Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);

De metagegevens van een bestand weergeven

Haal de metagegevenseigenschappen voor een bestand op door de functie ShareFileClient.GetProperties aan te roepen. De metagegevens bevindt zich onder het Metadata veld van de geretourneerde Value. De metagegevens zijn een sleutel-waardepaar, vergelijkbaar met het voorbeeld in De metagegevens van een bestand instellen.

// Retrieve the file properties
auto properties = fileClient.GetProperties().Value;
std::cout << "Listing blob metadata..." << std::endl;
for (auto metadata : properties.Metadata)
{
    std::cout << metadata.first << ":" << metadata.second << std::endl;
}

Bestanden downloaden

Nadat u de eigenschappen van het bestand hebt opgehaald in De metagegevens van een bestand een nieuw std::vector<uint8_t> object weergeven met behulp van de eigenschappen van het geüploade bestand. Download het eerder gemaakte bestand naar het nieuwe std::vector<uint8_t> object door de functie DownloadTo aan te roepen in de shareFileClient-basisklasse . Geef ten slotte de gedownloade bestandsgegevens weer.

Voeg deze code toe aan het einde van main():

std::vector<uint8_t> fileDownloaded(properties.FileSize);
fileClient.DownloadTo(fileDownloaded.data(), fileDownloaded.size());

std::cout << "Downloaded file contents: " << std::string(fileDownloaded.begin(), fileDownloaded.end()) << std::endl;

Een bestand verwijderen

Met de volgende code wordt de blob verwijderd uit de Azure Storage Files Share door de functie ShareFileClient.Delete aan te roepen.

std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();

Een bestandsshare verwijderen

Met de volgende code worden de resources opgeschoond die de app heeft gemaakt door de volledige bestandsshare te verwijderen met behulp van ShareClient.Verwijderen.

Voeg deze code toe aan het einde van main():

std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();

De code uitvoeren

Met deze app maakt u een container en uploadt u een tekstbestand naar Azure Blob Storage. Vervolgens wordt een lijst gemaakt van de blobs in de container, wordt het bestand gedownload en wordt de bestandsinhoud weergegeven. Ten slotte verwijdert de app de blob en de container.

De uitvoer van de app lijkt op die in het volgende voorbeeld:

Azure Files Shares storage v12 - C++ quickstart sample
Creating files share: sample-share
Uploading file: sample-file
Listing file metadata...
key1:value1
key2:value2
Downloaded file contents: Hello Azure!
Deleting file: sample-file
Deleting files share: sample-share

Volgende stappen

In deze quickstart hebt u geleerd hoe u bestanden uploadt, downloadt en vermeldt met behulp van C++. U hebt ook geleerd hoe u een Azure Storage Files-share maakt en verwijdert.

Als u een voorbeeld wilt zien van Blob Storage voor C++, ga dan naar: