Dela via


Utveckla för Azure Files med C++

Dricks

Prova Microsoft Azure Lagringsutforskaren

Microsoft Azure Storage Explorer är en kostnadsfri, fristående app från Microsoft som gör det möjligt att arbeta visuellt med Azure Storage-data i Windows, macOS och Linux.

Gäller för

Typ av filresurs SMB NFS
Standardfilresurser (GPv2), LRS/ZRS Ja Inga
Standardfilresurser (GPv2), GRS/GZRS Ja Inga
Premiumfilresurser (FileStorage), LRS/ZRS Ja Nej

Om den här självstudiekursen

I den här självstudien får du lära dig hur du utför grundläggande åtgärder i Azure Files med C++. Om du inte har använt Azure Files tidigare är det bra att gå igenom begreppen i avsnitten som följer för att förstå exemplen. Några av exemplen som beskrivs är:

  • Skapa och ta bort Azure-filresurser
  • Skapa och ta bort kataloger
  • Ladda upp, ladda ned och ta bort en fil
  • Ange och lista metadata för en fil

Kommentar

Eftersom Azure Files kan nås via SMB är det möjligt att skriva enkla program som har åtkomst till Azure-filresursen med hjälp av standardklasserna och funktionerna för C++I/O. Den här artikeln beskriver hur du skriver program som använder Azure Storage C++ SDK, som använder FIL-REST API för att prata med Azure Files.

Förutsättningar

Konfigurera

Det här avsnittet beskriver hur du förbereder ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket v12 för C++.

Installera paketen

Kommandot vcpkg install installerar Azure Storage Blobs SDK för C++ och nödvändiga beroenden:

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

Mer information finns i GitHub för att hämta och skapa Azure SDK för C++.

Skapa projektet

I Visual Studio skapar du ett nytt C++-konsolprogram för Windows med namnet FilesShareQuickstartV12.

Visual Studio-dialogruta för att konfigurera en ny C++ Windows-konsolapp

Kopiera dina autentiseringsuppgifter från Azure-portalen

När exempelprogrammet skickar en begäran till Azure Storage måste det vara auktoriserat. Om du vill auktorisera en begäran lägger du till dina autentiseringsuppgifter för lagringskontot i programmet som en niska veze. Följ dessa steg för att visa dina autentiseringsuppgifter för lagringskontot:

  1. Logga in på Azure-portalen.

  2. Leta rätt på ditt lagringskonto.

  3. I menyfönstret för lagringskonto går du till Säkerhet + nätverk och väljer Åtkomstnycklar. Här kan du visa kontoåtkomstnycklarna och hela niska veze för varje nyckel.

    Skärmbild som visar var inställningarna för åtkomstnyckeln finns i Azure-portalen

  4. I fönstret Åtkomstnycklar väljer du Visa nycklar.

  5. Leta upp värdet Anslutningssträng i avsnittet key1. Välj ikonen Kopiera till Urklipp för att kopiera niska veze. Du lägger till värdet niska veze i en miljövariabel i nästa avsnitt.

    Skärmbild som visar hur man kopierar en anslutningssträng från Azure-portalen

Konfigurera anslutningssträngen för lagring

När du har kopierat niska veze skriver du den till en ny miljövariabel på den lokala dator som kör programmet. Konfigurera miljövariabeln genom att öppna ett konsolfönster och följa anvisningarna för ditt operativsystem. Ersätt <yourconnectionstring> med din faktiska niska veze.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

När du har lagt till miljövariabeln i Windows måste du starta en ny instans av kommandofönstret.

Starta om program

När du har lagt till miljövariabeln startar du om alla program som körs och som behöver läsa miljövariabeln. Starta till exempel om utvecklingsmiljön eller redigeringsprogrammet innan du fortsätter.

Kodexempel

De här exempelkodfragmenten visar hur du utför följande uppgifter med Azure Files Share-klientbiblioteket för C++:

Lägga till inkluderingsfiler

Från projektkatalogen:

  1. Öppna FilesShareQuickstartV12.sln lösningsfilen i Visual Studio.
  2. Öppna källfilen FilesShareQuickstartV12.cpp i Visual Studio.
  3. Ta bort all kod inuti main som har genererats automatiskt.
  4. Lägg till #include instruktioner.
#include <iostream>
#include <stdlib.h>
#include <vector>

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

Hämta anslutningssträngen

Koden nedan hämtar niska veze för ditt lagringskonto från miljövariabeln som skapades i Konfigurera lagrings-niska veze.

Lägg till den här koden i 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

Skapa en filresurs

Skapa en instans av klassen ShareClient genom att anropa funktionen CreateFromConnectionString . Anropa sedan CreateIfNotExists för att skapa den faktiska filresursen i ditt lagringskonto.

Lägg till den här koden i slutet av 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();

Ladda upp filer till en filresurs

Följande kodfragment:

  1. Deklarerar en sträng som innehåller "Hello Azure!".
  2. Hämtar en referens till ett ShareFileClient-objekt genom att hämta roten ShareDirectoryClient och sedan anropa GetFileClient på filresursen från avsnittet Skapa en filresurs .
  3. Laddar upp strängen till filen genom att anropa funktionen UploadFrom . Den här funktionen skapar filen om den inte redan finns eller uppdaterar den om den gör det.

Lägg till den här koden i slutet av 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));

Ange metadata för en fil

Ange metadataegenskaperna för en fil genom att anropa funktionen ShareFileClient.SetMetadata .

Lägg till den här koden i slutet av main():

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

Visa en lista över metadata för en fil

Hämta metadataegenskaperna för en fil genom att anropa funktionen ShareFileClient.GetProperties . Metadata finns under fältet för Metadata den returnerade Value. Metadata är ett nyckel/värde-par som liknar exemplet i Ange metadata för en fil.

// 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;
}

Ladda ned filer

Efter att ha hämtat egenskaperna för filen i Lista metadata för en fil ett nytt std::vector<uint8_t> objekt med hjälp av egenskaperna för den uppladdade filen. Ladda ned den tidigare skapade filen till det nya std::vector<uint8_t> objektet genom att anropa funktionen DownloadTo i basklassen ShareFileClient . Visa slutligen nedladdade fildata.

Lägg till den här koden i slutet av 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;

Ta bort en fil

Följande kod tar bort bloben från Azure Storage Files-resursen genom att anropa funktionen ShareFileClient.Delete .

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

Ta bort en filresurs

Följande kod rensar de resurser som appen skapade genom att ta bort hela filresursen med hjälp av ShareClient.Ta bort.

Lägg till den här koden i slutet av main():

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

Kör koden

Den här appen skapar en container och laddar upp en textfil till Azure Blob Storage. Exemplet visar sedan blobarna i containern, laddar ned filen och visar filinnehållet. Slutligen tar appen bort bloben och containern.

Utdata från appen liknar följande exempel:

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

Nästa steg

I den här snabbstarten har du lärt dig hur du laddar upp, laddar ned och listar filer med hjälp av C++. Du har också lärt dig hur du skapar och tar bort en Azure Storage Files-resurs.

Om du vill se ett C++ Blob Storage-exempel fortsätter du till: