Záznam ze Vzdělávacího okénka HAVIT z 9. května 2019, kde Jiří Kanda povídal o Azure Blob Storage a Azure CDN (Content Delivery Network).
Tag Archives: Azure Storage
Vývoj cloudových aplikací – 04 Azure Storage, Blobs, Queues [MFF UK NSWI152, LS 2018]
Záznam z čtvrté vyučovací hodiny (13. března 2018) semináře Vývoj cloudových aplikací (NSWI152) pro MMF UK v letním semestru 2017/2018. Je publikován na našem HAVIT YouTube Channelu.
Dotčená témata
- Azure Storage Account
- Azure Storage – Blobs
- Azure Storage – Queues
Záznam je v angličtině. Ukázalo se, že na hodinu přišlo více zahraničních studentů než českých, tak jsme se domluvili takto.
Instrukce k labům jsou k dispozici na GitHubu – LAB4 + LAB5.
Azure: Ověření existence blobu, pokud mám jeho URI
Pokud máte pouze storage account (CloudBlobClient
) a URI blobu v něm, není úplně jednoduché existenci blobu ověřit. Přesněji řečeno při touze použít obvyklou metodu ICloudBlob.Exists()
, musíte mít na daný blob referenci. Pro její získání z URI je tu metoda CloudBlobClient.GetBlobReferenceFromServer(Uri blobUri)
, která však při svém zavolání dělá HEAD request na blob a snaží se dotáhnout jeho metadata. Pokud blob neexistuje, vyhodí už tato metoda výjimku a na nějaké Exists()
se už ani nedostane.
Výjimku lze zachytit s pěkným pattern-matchingem:
ICloudBlob blob; try { blob = blobClient.GetBlobReferenceFromServer(new Uri(url)); } catch (Microsoft.WindowsAzure.Storage.StorageException ex) when ((ex.InnerException is System.Net.WebException wex) && (wex.Response is System.Net.HttpWebResponse httpWebResponse) && (httpWebResponse.StatusCode == System.Net.HttpStatusCode.NotFound)) { // blob does not exist, do whatever you need here return null; } // further code able to use the blob-reference
Pokud s referencí na blob nepotřebujete dále pracovat, tak samozřejmě můžete jeho existenci ověřit vlastním jednoduchým HTTP HEAD requestem z libovolného HTTP klienta.
Každopádně je zde obskurní už to, že máte na daný blob pouze plné URL. Za příčetných okolností byste měli mít k dispozici strukturovanou informaci o názvu containeru a blobu v něm, což by šlo samozřejmě z URL i vyparsovat.