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:
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);