Share 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 No

Over deze zelfstudie

In deze zelfstudie leert u hoe u basisbewerkingen uitvoert op Azure Files met behulp van C++. Als u nog geen ervaring hebt met Azure Files, is het handig om de concepten in de volgende secties door te nemen om de voorbeelden te begrijpen. Enkele van de behandelde voorbeelden zijn:

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

Notitie

Omdat Azure Files toegankelijk zijn 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 met Azure Files te communiceren.

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 de vcpkg install opdracht installeert u de Azure Storage Blobs SDK voor C++ en de benodigde afhankelijkheden:

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

Ga voor meer informatie naar GitHub 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 de referenties van uw opslagaccount weer te geven:

  1. Meld u aan bij Azure Portal.

  2. Zoek uw opslagaccount.

  3. Selecteer in het menuvenster van het opslagaccount onder Beveiliging en netwerkende optie Toegangssleutels. Hier kunt u de toegangssleutels van het account en de volledige connection string voor elke sleutel bekijken.

    Schermopname die laat zien waar de instellingen voor de toegangssleutel zich bevinden in de Azure Portal

  4. Selecteer in het deelvenster Toegangssleutelsde optie Sleutels weergeven.

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

    Schermopname waarin een verbindingsreeks vanuit de Azure-portal wordt gekopieerd

De opslagverbindingsreeks configureren

Nadat u de connection string 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 voordat u doorgaat.

Codevoorbeelden

Deze voorbeeldcodefragmenten laten zien hoe u de volgende taken uitvoert met de Azure Files Clientbibliotheek delen voor C++:

Include-bestanden toevoegen

Ga als volgt te werk vanuit de projectmap:

  1. Open het oplossingsbestand FilesShareQuickstartV12.sln in Visual Studio.
  2. Open in Visual Studio het bronbestand FilesShareQuickstartV12.cpp .
  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 klasse ShareClient 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. Hiermee haalt u een verwijzing naar een ShareFileClient-object op door de hoofdmap ShareDirectoryClient op te halen en vervolgens GetFileClient op de bestandsshare aan te roepen in de sectie Een bestandsshare maken .
  3. Uploadt de tekenreeks naar het bestand door de functie UploadFrom aan te roepen. Met deze functie wordt het bestand gemaakt als het nog niet bestaat of wordt het bijgewerkt als dat 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 eigenschappen van metagegevens 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 eigenschappen van metagegevens 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 nieuwstd::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-bestandsshare 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 kunt uploaden, downloaden en vermelden met behulp van C++. U hebt ook geleerd hoe u een Azure Storage-bestandsshare maakt en verwijdert.

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