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 | ||
Standardfilresurser (GPv2), GRS/GZRS | ||
Premiumfilresurser (FileStorage), LRS/ZRS |
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.
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:
Logga in på Azure-portalen.
Leta rätt på ditt lagringskonto.
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.
I fönstret Åtkomstnycklar väljer du Visa nycklar.
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.
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
- Hämta niska veze
- Skapa en filresurs
- Ladda upp filer till en filresurs
- Ange metadata för en fil
- Visa en lista över metadata för en fil
- Ladda ned filer
- Ta bort en fil
- Ta bort en filresurs
Lägga till inkluderingsfiler
Från projektkatalogen:
- Öppna FilesShareQuickstartV12.sln lösningsfilen i Visual Studio.
- Öppna källfilen FilesShareQuickstartV12.cpp i Visual Studio.
- Ta bort all kod inuti
main
som har genererats automatiskt. - 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:
- Deklarerar en sträng som innehåller "Hello Azure!".
- 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 .
- 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: