Sviluppare per File di Azure con C++

Suggerimento

Provare Esplora archivi Microsoft Azure

Microsoft Azure Storage Explorer è un'app autonoma gratuita di Microsoft che consente di rappresentare facilmente dati di Archiviazione di Azure in Windows, macOS e Linux.

Si applica a

Tipo di condivisione file SMB NFS
Condivisioni file Standard (GPv2), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Sì No
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona Sì No
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Sì No

Informazioni sull'esercitazione

In questa esercitazione si apprenderà come eseguire operazioni di base su File di Azure usando C++. Se non si ha familiarità con File di Azure, verranno illustrati i concetti nelle sezioni che seguono saranno utili per comprendere gli esempi. Alcuni degli esempi trattati sono:

  • Creare ed eliminare condivisioni file di Azure
  • Creare ed eliminare directory
  • Caricare, scaricare ed eliminare un file
  • Impostare ed elencare i metadati per un file

Nota

Poiché è possibile accedere a File di Azure tramite SMB, è possibile scrivere semplici applicazioni che accedono alla condivisione file di Azure usando le classi e le funzioni di I/O standard di C++. Questo articolo illustra come scrivere applicazioni che usano l'SDK C++ Archiviazione di Azure che a sua volta usa l'API REST del servizio file per comunicare con File di Azure.

Prerequisiti

Configurazione

Questa sezione illustra come preparare un progetto da usare con la libreria client di Archiviazione BLOB di Azure v12 per C++.

Installare i pacchetti

Il vcpkg install comando installerà Azure Storage BLOBs SDK per C++ e le dipendenze necessarie:

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

Per altre informazioni, visitare GitHub per acquisire e compilare Azure SDK per C++.

Creare il progetto

In Visual Studio creare una nuova applicazione console C++ per Windows denominata FilesShareQuickstartV12.

Finestra di dialogo di Visual Studio per la configurazione di una nuova app console C++ per Windows

Copiare le credenziali dal portale di Azure

Le richieste effettuate dall'applicazione di esempio ad Archiviazione di Azure devono essere autorizzate. Per autorizzare una richiesta, aggiungere all'applicazione le credenziali dell'account di archiviazione sotto forma di stringa di connessione. Per visualizzare le credenziali dell'account di archiviazione, seguire questa procedura:

  1. Accedere al portale di Azure.

  2. Individuare l'account di archiviazione.

  3. Nel riquadro menu account di archiviazione, in Sicurezza e rete selezionare Chiavi di accesso. In questo caso è possibile visualizzare le chiavi di accesso dell'account e la stringa di connessione completa per ogni chiave.

    Screenshot che mostra dove si trovano le impostazioni della chiave di accesso nella portale di Azure

  4. Nel riquadro Chiavi di accesso selezionare Mostra chiavi.

  5. Nella sezione key1 individuare il valore stringa di connessione . Selezionare l'icona Copia negli Appunti per copiare la stringa di connessione. Si aggiungerà il valore della stringa di connessione a una variabile di ambiente nella sezione successiva.

    Screenshot che mostra come copiare una stringa di connessione dal portale di Azure

Configurare la stringa di connessione di archiviazione

Dopo aver copiato la stringa di connessione, scriverla in una nuova variabile di ambiente nel computer locale che esegue l'applicazione. Per impostare la variabile di ambiente, aprire una finestra della console e seguire le istruzioni per il sistema operativo specifico. Sostituire <yourconnectionstring> con la stringa di connessione effettiva.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Dopo aver aggiunto la variabile di ambiente in Windows, è necessario avviare una nuova istanza della finestra di comando.

Riavviare i programmi

Dopo aver aggiunto la variabile di ambiente, riavviare gli eventuali programmi in esecuzione che dovranno leggerla. Ad esempio, riavviare l'ambiente di sviluppo o l'editor prima di continuare.

Esempi di codice

Questi frammenti di codice di esempio illustrano come eseguire le attività seguenti con la libreria client di condivisione File di Azure per C++:

Aggiungere file di inclusione

Dalla directory del progetto:

  1. Aprire il file di soluzione FilesShareQuickstartV12.sln in Visual Studio.
  2. In Visual Studio aprire il file di origine FilesShareQuickstartV12.cpp .
  3. Rimuovere qualsiasi codice all'interno main di che è stato generato automaticamente.
  4. Aggiungere #include istruzioni.
#include <iostream>
#include <stdlib.h>
#include <vector>

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

Ottenere la stringa di connessione

Il codice seguente recupera la stringa di connessione per l'account di archiviazione dalla variabile di ambiente creata in Configurare la stringa di connessione di archiviazione.

Aggiungere questo codice all'interno di 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

Creare una condivisione file

Creare un'istanza della classe ShareClient chiamando la funzione CreateFromConnectionString . Chiamare quindi CreateIfNotExists per creare la condivisione dei file effettivi nell'account di archiviazione.

Aggiungere questo codice alla fine di 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();

Caricare file in una condivisione file

Il frammento di codice seguente consente di:

  1. Dichiarare una stringa che contiene "Hello Azure!".
  2. Ottiene un riferimento a un oggetto ShareFileClient ottenendo la radice ShareDirectoryClient e quindi chiamando GetFileClient nella condivisione file dalla sezione Creare una condivisione file .
  3. Carica la stringa nel file chiamando la funzione UploadFrom . Questa funzione crea il file se non esiste già o lo aggiorna, se lo fa.

Aggiungere questo codice alla fine di 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));

Impostare i metadati di un file

Impostare le proprietà dei metadati per un file chiamando la funzione ShareFileClient.SetMetadata .

Aggiungere questo codice alla fine di main():

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

Elencare i metadati di un file

Ottenere le proprietà dei metadati per un file chiamando la funzione ShareFileClient.GetProperties . I metadati si trovano nel Metadata campo dell'oggetto restituito Value. I metadati saranno una coppia chiave-valore, simile all'esempio in Impostare i metadati di un file.

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

Scaricare i file

Dopo aver recuperato le proprietà del file in Elencare i metadati di un nuovo std::vector<uint8_t> oggetto File usando le proprietà del file caricato. Scaricare il file creato in precedenza nel nuovo std::vector<uint8_t> oggetto chiamando la funzione DownloadTo nella classe di base ShareFileClient . Visualizzare infine i dati dei file scaricati.

Aggiungere questo codice alla fine di 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;

Eliminare un file

Il codice seguente elimina il BLOB dalla condivisione file di archiviazione di Azure chiamando la funzione ShareFileClient.Delete .

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

Eliminare una condivisione file

Il codice seguente pulisce le risorse create dall'app eliminando l'intera condivisione file usando ShareClient. Elimina.

Aggiungere questo codice alla fine di main():

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

Eseguire il codice

Questa app crea un contenitore e carica un file di testo in Archiviazione BLOB di Azure. L'esempio elenca quindi i BLOB nel contenitore, scarica il file e visualizza il contenuto del file. Infine, l'app elimina il BLOB e il contenitore.

L'output dell'app è simile all'esempio seguente:

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

Passaggi successivi

In questa guida introduttiva si è appreso come caricare, scaricare ed elencare file con C++. Si è anche appreso come creare ed eliminare una condivisione file di Archiviazione di Azure.

Per visualizzare un esempio di Archiviazione BLOB per C++, procedere con: