C++ ile Azure Dosyalar için geliştirme
İpucu
Microsoft Azure Depolama Gezgini’ni deneyin
Microsoft Azure Depolama Gezgini, Microsoft’un Windows, macOS ve Linux üzerinde Azure Depolama verileriyle görsel olarak çalışmanızı sağlayan ücretsiz ve tek başına uygulamasıdır.
Şunlara uygulanır
Dosya paylaşımı türü | SMB | NFS |
---|---|---|
Standart dosya paylaşımları (GPv2), LRS/ZRS | ||
Standart dosya paylaşımları (GPv2), GRS/GZRS | ||
Premium dosya paylaşımları (filestorage), LRS/ZRS |
Bu öğretici hakkında
Bu öğreticide, C++ kullanarak Azure Dosyalar üzerinde temel işlemleri nasıl yapacağınızı öğreneceksiniz. Azure Dosyalar yeniyseniz, aşağıdaki bölümlerde yer alan kavramları gözden geçirmeniz örnekleri anlamanıza yardımcı olacaktır. Ele alınan örneklerden bazıları şunlardır:
- Azure dosya paylaşımlarını oluşturma ve silme
- Dizin oluşturma ve silme
- Dosyayı karşıya yükleme, indirme ve silme
- Dosyanın meta verilerini ayarlama ve listeleme
Not
Azure Dosyalar SMB üzerinden erişilebileceği için standart C++ G/Ç sınıflarını ve işlevlerini kullanarak Azure dosya paylaşımına erişen basit uygulamalar yazabilirsiniz. Bu makalede, Azure Dosyalar konuşmak için Dosya REST API'sini kullanan Azure Depolama C++ SDK'sını kullanan uygulamaların nasıl yazılacağı açıklanır.
Önkoşullar
Ayarlama
Bu bölümde, C++ için Azure Blob Depolama istemci kitaplığı v12 ile çalışmak üzere bir proje hazırlama işleminde size yol gösterilir.
Paketleri yükleme
vcpkg install
komutu C++ için Azure Depolama Blobları SDK'sını ve gerekli bağımlılıkları yükler:
vcpkg.exe install azure-storage-files-shares-cpp:x64-windows
Daha fazla bilgi için GitHub'ı ziyaret ederek C++ için Azure SDK'yı edinin ve derleyin.
Proje oluşturma
Visual Studio'da, Windows için FilesShareQuickstartV12 adlı yeni bir C++ konsol uygulaması oluşturun.
Azure portalından kimlik bilgilerinizi kopyalama
Örnek uygulama Azure Depolama'ya istekte bulunurken yetkilendirilmelidir. Bir isteği yetkilendirmek için depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin. Depolama hesabı kimlik bilgilerinizi görüntülemek için şu adımları izleyin:
Azure Portal’ında oturum açın.
Depolama hesabınızı bulun.
Depolama hesabı menü bölmesinde, Güvenlik + ağ altında Erişim anahtarları'nı seçin. Burada hesap erişim anahtarlarını ve her anahtar için tam bağlantı dizesi görüntüleyebilirsiniz.
Erişim anahtarları bölmesinde Anahtarları göster'i seçin.
anahtar1 bölümünde Bağlantı dizesi değerini bulun. bağlantı dizesi kopyalamak için Panoya kopyala simgesini seçin. sonraki bölümde ortam değişkenine bağlantı dizesi değeri ekleyeceksiniz.
Depolama bağlantı dizelerinizi yapılandırma
bağlantı dizesi kopyaladıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın. Ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin yönergelerini izleyin. değerini gerçek bağlantı dizesi ile değiştirin<yourconnectionstring>
.
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
Windows'da ortam değişkenini ekledikten sonra komut penceresinin yeni bir örneğini başlatmanız gerekir.
Programları yeniden başlatma
Ortam değişkenini ekledikten sonra ortam değişkenini okuması gereken tüm çalışan programları yeniden başlatın. Örneğin, devam etmeden önce geliştirme ortamınızı veya düzenleyicinizi yeniden başlatın.
Kod örnekleri
Bu örnek kod parçacıkları, C++ için Azure Dosyalar Paylaş istemci kitaplığıyla aşağıdaki görevlerin nasıl yapılacağını gösterir:
- Ekleme dosyaları ekleme
- bağlantı dizesi alma
- Dosya paylaşımı oluşturma
- Dosyaları dosya paylaşımına yükleme
- Dosyanın meta verilerini ayarlama
- Dosyanın meta verilerini listeleme
- Dosyaları indirme
- Dosya silme
- Dosya paylaşımını silme
Ekleme dosyaları ekleme
Proje dizininden:
- FilesShareQuickstartV12.sln çözüm dosyasını Visual Studio'da açın.
- Visual Studio'da FilesShareQuickstartV12.cpp kaynak dosyasını açın.
- Otomatik oluşturulan içindeki
main
tüm kodları kaldırın. - Deyimleri ekleyin
#include
.
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <azure/storage/files/shares.hpp>
Bağlantı dizesini alma
Aşağıdaki kod depolama hesabınızın bağlantı dizesi Depolama bağlantı dizesi yapılandırma bölümünde oluşturulan ortam değişkeninden alır.
Bu kodu içine main()
ekleyin:
// 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
Dosya Paylaşımı Oluşturma
CreateFromConnectionString işlevini çağırarak ShareClient sınıfının bir örneğini oluşturun. Ardından, depolama hesabınızda gerçek dosya paylaşımını oluşturmak için CreateIfNotExists'ı çağırın.
Bu kodu sonuna main()
ekleyin:
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();
Dosyaları Dosya Paylaşımına yükleme
Aşağıdaki kod parçacığı:
- "Hello Azure!" içeren bir dize bildirir.
- Kök ShareDirectoryClient'ı alıp Dosya Paylaşımı Oluştur bölümünden dosya paylaşımında GetFileClient'ı çağırarak bir ShareFileClient nesnesine başvuru alır.
- UploadFrom işlevini çağırarak dizeyi dosyaya yükler. Bu işlev, henüz mevcut değilse dosyayı oluşturur veya varsa güncelleştirir.
Bu kodu sonuna main()
ekleyin:
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));
Dosyanın meta verilerini ayarlama
ShareFileClient.SetMetadata işlevini çağırarak dosyanın meta veri özelliklerini ayarlayın.
Bu kodu sonuna main()
ekleyin:
Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);
Dosyanın meta verilerini listeleme
ShareFileClient.GetProperties işlevini çağırarak dosyanın meta veri özelliklerini alın. Meta veriler, döndürülen Value
alanının altındadırMetadata
. Meta veriler, Dosyanın meta verilerini ayarlama başlığındaki örneğe benzer bir anahtar-değer çifti olacaktır.
// 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;
}
Dosyaları indirme
Karşıya yüklenen dosyanın özelliklerini kullanarak Dosyanın meta verilerini yeni std::vector<uint8_t>
bir nesne olarak listeleme bölümünde dosyanın özelliklerini aldıktan sonra. ShareFileClient temel sınıfında DownloadTo işlevini çağırarak daha önce oluşturulan dosyayı yeni std::vector<uint8_t>
nesneye indirin. Son olarak, indirilen dosya verilerini görüntüleyin.
Bu kodu sonuna main()
ekleyin:
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;
Dosya silme
Aşağıdaki kod, ShareFileClient.Delete işlevini çağırarak blobu Azure Depolama Dosyaları Paylaşımı'ndan siler .
std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();
Dosya paylaşımını silme
Aşağıdaki kod, ShareClient kullanarak Dosya Paylaşımı'nın tamamını silerek uygulamanın oluşturduğu kaynakları temizler.Sil'i seçin.
Bu kodu sonuna main()
ekleyin:
std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();
Kodu çalıştırma
Bu uygulama bir kapsayıcı oluşturur ve Azure Blob Depolama bir metin dosyası yükler. Örnek daha sonra kapsayıcıdaki blobları listeler, dosyayı indirir ve dosya içeriğini görüntüler. Son olarak, uygulama blobu ve kapsayıcıyı siler.
Uygulamanın çıkışı aşağıdaki örneğe benzer:
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
Sonraki adımlar
Bu hızlı başlangıçta, C++ kullanarak dosyaları karşıya yüklemeyi, indirmeyi ve listelemeyi öğrendiniz. Ayrıca Azure Depolama Dosyaları Paylaşımı oluşturmayı ve silmeyi de öğrendinsiniz.
C++ Blob Depolama örneğini görmek için devam edin: