Cvičení – nahrávání a stahování objektů blob
K interakci s jednotlivými objekty blob ve službě Blob Storage použijte BlobClient
objekt. Můžete ho získat BlobClient
tak, že ho požádáte o název objektu blob z umístění objektu BlobContainerClient
blob.
BlobClient
obsahuje metody pro nahrávání, stahování a správu jednotlivých objektů blob ve službě Blob Storage.
Získání objektu BlobClient
Pokud chcete získat BlobClient
hodnotu podle názvu, zavolejte GetBlobClient
metody BlobContainerClient
, které obsahují objekt blob, pomocí názvu objektu blob. Objekt BlobClient
umožňuje interakci s objektem blob nahráním, stažením nebo správou objektu blob ve službě Blob Storage.
Přesun dat do a z objektů blob je síťová operace, která nějakou dobu trvá. Sada Azure Storage SDK pro .NET poskytuje asynchronní implementaci všech metod, které vyžadují síťovou aktivitu. Tyto asynchronní implementace doporučujeme používat, kdykoli je to možné ve vaší aplikaci.
Při práci s velkými datovými objekty doporučujeme používat datové proudy místo struktur v paměti, jako jsou pole bajtů nebo řetězce. Tento přístup zabraňuje ukládání celého obsahu do vyrovnávací paměti před odesláním do cíle. ASP.NET Core podporuje čtení a zápis datových proudů z požadavků a odpovědí.
Pokud chcete získat BlobClient
hodnotu podle názvu, zavolejte getBlobClient
metody BlobContainerClient
, které obsahují objekt blob, pomocí názvu objektu blob. Objekt BlobClient
umožňuje interakci s objektem blob nahráním, stažením nebo správou objektu blob ve službě Blob Storage.
Při práci s velkými datovými objekty doporučujeme používat datové proudy místo struktur v paměti, jako jsou pole bajtů nebo řetězce. Tento přístup zabraňuje ukládání celého obsahu do vyrovnávací paměti před odesláním do cíle.
Vytváření nových objektů blob
Pokud chcete vytvořit nový objekt blob, zavolejte jednu z metod Upload
v odkazu na objekt blob, který v úložišti neexistuje. Tento přístup dělá dvě věci: vytvoří objekt blob v úložišti a nahraje data.
BlobClient blobClient = containerClient.GetBlobClient(name);
var response = blobClient.UploadAsync(fileStream);
Pokud chcete vytvořit nový objekt blob, zavolejte jednu z metod upload
v odkazu na objekt blob, který v úložišti neexistuje. Tento přístup dělá dvě věci: vytvoří objekt blob v úložišti a nahraje data.
BlobClient blobClient = blobContainerClient.getBlobClient(name);
blobClient.upload(inputStream, contentLength);
Cvičení
Dokončete aplikaci tak, že přidáte kód pro nahrání a stažení a pak ji nasadíte do služby Aplikace Azure Service pro účely testování.
Nahrávání
K nahrání objektu blob implementujete metodu BlobStorage.Save
. Nejprve získáte BlobClient
objekt, který představuje objekt blob voláním GetBlobClient
objektu BlobContainerClient
. Pak použijte metodu UploadAsync
BlobClient
na kartě k uložení Stream
dat předaných této metodě do služby Blob Storage.
V editoru nahraďte v souboru
BlobStorage.cs
operaciSave
následujícím kódem: K uložení práce použijte klávesu CTRL+S.public Task Save(Stream fileStream, string name) { BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString); // Get the container (folder) the file will be saved in BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName); // Get the Blob Client used to interact with (including create) the blob BlobClient blobClient = containerClient.GetBlobClient(name); // Upload the blob return blobClient.UploadAsync(fileStream); }
Poznámka:
Zde zobrazený kód pro nahrání na základě streamu je efektivnější než čtení souboru do pole bajtů před odesláním do služby Blob Storage. Technika ASP.NET Core
IFormFile
, kterou používáte k získání souboru z klienta, ale není skutečnou kompletní implementací streamování. Je vhodné pouze pro zpracování nahrávání malých souborů.
K nahrání objektu blob implementujete metodu BlobStorage.save
. Nejprve získáte BlobClient
objekt, který představuje objekt blob voláním getBlobClient
objektu BlobContainerClient
. Pak použijte metodu upload
BlobClient
na kartě k uložení InputStream
dat předaných této metodě do služby Blob Storage.
V editoru nahraďte v souboru
BlobStorage.java
operacisave
následujícím kódem:public void save(String name, InputStream inputStream, long contentLength) { BlobClient blobClient = blobContainerClient.getBlobClient(name); blobClient.upload(inputStream, contentLength); }
Stáhnout
Chcete-li stáhnout soubor, OpenReadAsync
vrátí se metoda objektu BlobClient
. Tato metoda vrátí Stream
hodnotu , což znamená, že váš kód nemusí načítat všechny bajty ze služby Blob Storage najednou. Stačí vrátit odkaz na datový proud objektů blob, který ASP.NET Core může použít k streamování souboru do prohlížeče.
Nahraďte
Load
tímto kódem a uložte svoji práci pomocí kombinace kláves CTRL+S.public Task<Stream> Load(string name) { BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString); // Get the container the blobs are saved in BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName); // Get a client to operate on the blob so we can read it. BlobClient blobClient = containerClient.GetBlobClient(name); return blobClient.OpenReadAsync(); }
Chcete-li stáhnout soubor, použijte metodu openInputStream
na .BlobClient
Tato metoda vrátí InputStream
hodnotu , což znamená, že váš kód nemusí načítat všechny bajty ze služby Blob Storage najednou. Stačí vrátit odkaz na stream objektů blob, který IndexBean
může použít ke streamování obsahu do prohlížeče.
Operaci read
nahraďte tímto kódem a práci uložte.
public InputStream read(String name) {
BlobClient blobClient = blobContainerClient.getBlobClient(name);
return blobClient.openInputStream();
}
Nasazení a spuštění v Azure
Vaše aplikace je hotová. Nasaďte ho a podívejte se, jak funguje.
Vytvořte aplikaci App Service a nakonfigurujte ji nastavením aplikace na připojovací řetězec účtu úložiště a název kontejneru. Získejte připojovací řetězec účtu úložiště pomocí
az storage account show-connection-string
a nastavte název kontejneru nafiles
.Název aplikace musí být globálně jedinečný. Zvolte vlastní jméno, které chcete vyplnit
<your-unique-app-name>
. K nahrazení<your-unique-storage-account-name>
použijte název účtu úložiště, který jste vytvořili dříve. V Azure CLI spusťte každý z následujících příkazů v pořadí:az appservice plan create \ --name blob-exercise-plan \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --sku FREE --location eastus
az webapp create \ --name <your-unique-app-name> \ --plan blob-exercise-plan \ --resource-group "<rgn>[sandbox resource group name]</rgn>"
CONNECTIONSTRING=$(az storage account show-connection-string \ --name <your-unique-storage-account-name> \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --output tsv)
az webapp config appsettings set \ --name <your-unique-app-name> --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --settings AzureStorageConfig:ConnectionString=$CONNECTIONSTRING AzureStorageConfig:FileContainerName=files
Nasaďte aplikaci. Následující příkazy pub site.zip pub
Poznámka:
Před spuštěním následujících příkazů se ujistěte, že je vaše prostředí stále v adresáři mslearn-store-data-in-azure/store-app-data-with-azure-blob-storage/src/start . Zadáním
cd mslearn-store-data-in-azure/store-app-data-with-azure-blob-storage/src/start
můžete adresář změnit na toto umístění.dotnet publish -o pub cd pub zip -r ../site.zip *
az webapp deploy \ --src-path ../site.zip \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
Pokud si chcete prohlédnout spuštěnou aplikaci, otevřete v prohlížeči
https://<your-unique-app-name>.azurewebsites.net
. Vaše zadání by mělo vypadat jako na následujícím obrázku.Otestujte aplikaci tak, že zkusíte nahrát a stáhnout nějaké soubory. Po nahrání několika souborů spusťte v kontejneru objekty blob následující kód. Nahraďte
<your-unique-storage-account-name>
názvem účtu úložiště, který jste vytvořili dříve v modulu:az storage blob list --account-name <your-unique-storage-account-name> --container-name files --query [].{Name:name} --output table
Vaše aplikace je hotová. Nasaďte ho a podívejte se, jak funguje. Pomocí modulu plug-in Maven pro Aplikace Azure Service vytvořte aplikaci App Service, nakonfigurujte ji a nasaďte.
V editoru otevřete soubor pom.xml a přidejte do značky
plugins
XML následujícíbuild
kód.<plugins> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.3.0</version> <configuration> <schemaVersion>v2</schemaVersion> <subscriptionId>${env.AZ_SUBSCRIPTION_ID}</subscriptionId> <resourceGroup>${env.AZ_RESOURCE_GROUP}</resourceGroup> <appName>${env.AZ_APP_NAME}</appName> <pricingTier>${env.AZ_PRICING_TIER}</pricingTier> <region>${env.AZ_REGION}</region> <runtime> <os>Linux</os> <javaVersion>Java 11</javaVersion> <webContainer>Tomcat 9.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> <appSettings> <property> <name>STORAGE_CONNECTION_STRING</name> <value>${env.AZ_STORAGE_CONNECTION_STRING}</value> </property> <property> <name>STORAGE_CONTAINER_NAME</name> <value>${env.AZ_STORAGE_CONTAINER_NAME}</value> </property> </appSettings> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins>
Následující příkazy připraví proměnné prostředí pro modul plug-in Maven pro službu Aplikace Azure Service. Extrahujte připojovací řetězec účtu úložiště s
az storage account show-connection-string
IDaz account show
předplatného a nastavte oblast, ceny, název kontejneru a název aplikace. Název aplikace musí být globálně jedinečný. Zvolte vlastní jméno, které chcete vyplnit<your-unique-app-name>
.export AZ_SUBSCRIPTION_ID=$(az account show --query id --output tsv) export AZ_RESOURCE_GROUP="<rgn>[sandbox resource group name]</rgn>" export AZ_REGION=eastus export AZ_APP_NAME=<your-unique-app-name> export AZ_PRICING_TIER=F1 export AZ_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string --name <your-unique-storage-account-name> --output tsv) export AZ_STORAGE_CONTAINER_NAME=files
Tip
Minimální doporučená úroveň pro nasazení reálných aplikací v Javě je jakýkoli plán služby Premium V2.
Nasaďte aplikaci. Následující příkaz sestaví aplikaci do ROOT.war a nasadí soubor WAR do služby App Service. Modul plug-in Maven pro Aplikace Azure Service zřizuje prostředky při prvním pokusu o nasazení.
Poznámka:
Před spuštěním následujících příkazů se ujistěte, že je vaše prostředí stále v adresáři mslearn-store-data-in-azure/store-java-ee-application-data-with-azure-blob-storage/start . Zadáním
cd mslearn-store-data-in-azure/store-java-ee-application-data-with-azure-blob-storage/start
můžete adresář změnit na toto umístění.mvn clean package azure-webapp:deploy
Pokud si chcete prohlédnout spuštěnou aplikaci, otevřete v prohlížeči
https://<your-unique-app-name>.azurewebsites.net
. Vaše zadání by mělo vypadat jako na následujícím obrázku.Tip
Tento modul používá modul plug-in Maven pro Aplikace Azure Service k nasazení aplikace na Tomcat 9 ve službě Aplikace Azure Service. Další informace o dalších možnostech najdete v části Další čtení na konci tohoto modulu.
Otestujte aplikaci tak, že zkusíte nahrát a stáhnout nějaké soubory. Po nahrání několika souborů spusťte v kontejneru objekty blob následující kód.
az storage blob list --account-name <your-unique-storage-account-name> --container-name files --query [].{Name:name} --output table