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 | ||
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona | ||
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona |
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, esaminare i concetti nelle sezioni seguenti sarà utile 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
- Sottoscrizione di Azure
- Account di archiviazione di Azure
- Compilatore C++
- CMake
- Vcpkg - Gestione pacchetti C e C++
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à Archiviazione di Azure BLOB SDK per C++ e le dipendenze necessarie:
vcpkg.exe install azure-storage-files-shares-cpp:x64-windows
Per altre informazioni, vedere 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.
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:
Accedere al portale di Azure.
Individuare l'account di archiviazione.
Nel menu dell'account di archiviazione, in Sicurezza e rete, selezionare Chiavi di accesso. A questo punto è possibile visualizzare le chiavi di accesso dell'account e la stringa di connessione completa per ogni chiave.
Nella pagina Chiavi di accesso, selezionare Mostra chiavi.
Nella sezione key1, individuare il valore della stringa di connessione. Selezionare l'icona Copia in Appunti per copiare la stringa di connessione. Il valore della stringa di connessione verrà aggiunto a una variabile di ambiente nella sezione successiva.
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
- Ottenere la stringa di connessione
- Creare una condivisione file
- Caricare file in una condivisione file
- Impostare i metadati di un file
- Elencare i metadati di un file
- Download dei file
- Eliminare un file
- Eliminare una condivisione file
Aggiungere file di inclusione
Dalla directory del progetto:
- Aprire il file della soluzione FilesShareQuickstartV12.sln in Visual Studio.
- In Visual Studio aprire il file di origine FilesShareQuickstartV12.cpp .
- Rimuovere qualsiasi codice all'interno
main
di che è stato generato automaticamente. - 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 . Chiama quindi CreateIfNotExists per creare la condivisione file effettiva 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:
- Dichiarare una stringa che contiene "Hello Azure!".
- Ottiene un riferimento a un oggetto ShareFileClient recuperando la radice ShareDirectoryClient e quindi chiamando GetFileClient nella condivisione file dalla sezione Crea una condivisione file.
- Carica la stringa nel file chiamando la funzione UploadFrom . Questa funzione crea il file se non esiste già o lo aggiorna in caso affermativo.
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 . Infine, visualizzare i dati del file scaricato.
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 i file con C++. Si è anche appreso come creare ed eliminare una condivisione file Archiviazione di Azure.
Per visualizzare un esempio di Archiviazione BLOB per C++, procedere con: