Come creare un sottocontenitore nella posizione di archiviazione blu

Come creare un sottocontenitore nella posizione di archiviazione blu.

Fatecelo sapere

Windows Azure non fornisce il concetto di contenitori gerarchici, ma fornisce un meccanismo per attraversare l’heirarchy per convenzione e API. Tutti i contenitori sono memorizzati allo stesso livello. È ansible ottenere la funzionalità simliar utilizzando le convenzioni di denominazione per i nomi blob.

Ad esempio, è ansible creare un contenitore denominato “contenuto” e creare BLOB con i seguenti nomi in tale contenitore:

content/blue/images/logo.jpg content/blue/images/icon-start.jpg content/blue/images/icon-stop.jpg content/red/images/logo.jpg content/red/images/icon-start.jpg content/red/images/icon-stop.jpg 

Nota che questi BLOB sono una lista piatta contro il tuo contenitore di “contenuto”. Detto questo, usando “/” come delimitatore convenzionale, ti fornisce la funzionalità per attraversarli in modo gerarchico.

 protected IEnumerable GetDirectoryList(string directoryName, string subDirectoryName) { CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); CloudBlobClient client = account.CreateCloudBlobClient(); CloudBlobDirectory directory = client.GetBlobDirectoryReference(directoryName); CloudBlobDirectory subDirectory = directory.GetSubdirectory(subDirectoryName); return subDirectory.ListBlobs(); } 

È quindi ansible chiamare questo come segue:

 GetDirectoryList("content/blue", "images") 

Prendere nota dei metodi GetBlobDirectoryReference e GetSubDirectory e del tipo CloudBlobDirectory anziché CloudBlobContainer . Questi forniscono la funzionalità trasversale che probabilmente stai cercando.

Questo dovrebbe aiutarti a iniziare. Fammi sapere se questo non risponde alla tua domanda:

[Grazie a Neil Mackenzie per l’ispirazione]

Ti riferisci alla memoria BLOB? In tal caso, la gerarchia è semplicemente StorageAccount / Container / BlobName. Non ci sono contenitori nidificati.

Detto questo, è ansible utilizzare le barre nel nome blob per simulare i contenitori annidati nell’URI. Vedere questo articolo su MSDN per i dettagli sui nomi.

Sono d’accordo con la risposta di Tobint e voglio aggiungere qualcosa in questa situazione perché anch’io ho bisogno allo stesso modo di caricare i miei giochi html in Archiviazione di Azure con la creazione di queste directory:

  • Games \ Beautyshop \ index.html
  • Giochi \ Beautyshop \ beni \ Apple.png
  • Giochi \ Beautyshop \ beni \ aromas.png
  • Giochi Beautyshop \ customfont.css \
  • Giochi \ Beautyshop \ jquery.js

Quindi dopo la tua raccomandazione ho provato a caricare i miei contenuti con lo strumento che è Azure Storage Explorer e puoi scaricare strumento e codice sorgente con questo URL: Azure Storage Explorer

Prima di tutto ho provato a caricare tramite lo strumento ma non consente il caricamento di directory gerarchiche perché non è necessario: Come creare una sottodirectory in un contenitore BLOB

Infine, eseguo il debug del codice sorgente di Azure Storage Explorer e ho modificato il metodo Background_UploadBlobs e il campo UploadFileList nel file StorageAccountViewModel.cs. Puoi modificarlo come desideri. Potrei aver commesso errori di ortografia: / Mi dispiace, ma questo è solo il mio consiglio.

Codice d’esempio

 string myfolder = ""; string myfilename = ""; string fileName = String.Format("{0}/{1}.csv", myfolder, myfilename); CloudBlockBlob blob = container.GetBlockBlobReference(fileName);