web-dev-qa-db-fra.com

Comment créer un sous-conteneur dans un emplacement de stockage Azure

Comment créer un sous-conteneur dans l'emplacement de stockage Azure.

Merci de nous le faire savoir

60
subramani

Windows Azure ne fournit pas le concept de conteneurs hiérarchiques, mais il fournit un mécanisme pour traverser la hiérarchie par convention et API. Tous les conteneurs sont stockés au même niveau. Vous pouvez obtenir des fonctionnalités similaires en utilisant des conventions de dénomination pour vos noms d'objets blob.

Par exemple, vous pouvez créer un conteneur nommé "contenu" et créer des objets blob avec les noms suivants dans ce conteneur:

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

Notez que ces blobs sont une liste plate par rapport à votre conteneur "contenu". Cela dit, l'utilisation du "/" comme délimiteur conventionnel vous offre la fonctionnalité pour les parcourir de manière héréditaire.

protected IEnumerable<IListBlobItem> 
          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();
}

Vous pouvez alors appeler cela comme suit:

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

Remarque l'utilisation de GetBlobDirectoryReference et Méthodes GetSubDirectory et le type CloudBlobDirectory au lieu de CloudBlobContainer . Ceux-ci fournissent la fonctionnalité de traversée que vous recherchez probablement.

Cela devrait vous aider à démarrer. Faites-moi savoir si cela ne répond pas à votre question:

[Merci à Neil Mackenzie pour l'inspiration]

108
tobint

Faites-vous référence au stockage d'objets blob? Si tel est le cas, la hiérarchie est simplement StorageAccount/Container/BlobName. Il n'y a pas de conteneurs imbriqués.

Cela dit, vous pouvez utiliser des barres obliques dans votre nom d'objet blob pour simuler des conteneurs imbriqués dans l'URI. Voir cet article sur MSDN pour les détails de dénomination.

10
David Makogon

Je suis d'accord avec la réponse Tobint et je veux ajouter quelque chose à cette situation car j'ai également besoin de la même manière de télécharger mes jeux html sur Azure Storage avec créer ces répertoires:

  • Games\Beautyshop\index.html
  • Games\Beautyshop\assets\Apple.png
  • Games\Beautyshop\assets\aromas.png
  • Jeux\Beautyshop\customfont.css
  • Games\Beautyshop\jquery.js

Donc, après votre recommandation, j'ai essayé de télécharger mon contenu avec l'outil qui est Azure Storage Explorer et vous pouvez télécharger l'outil et le code source avec cette URL: Azure Storage Explorer

Tout d'abord, j'ai essayé de télécharger via l'outil mais cela ne permet pas de télécharger un répertoire hiérarchique car vous n'avez pas besoin de: Comment créer un sous-répertoire dans un conteneur blob

Enfin, je débogue le code source d'Azure Storage Explorer et j'ai modifié la méthode Background_UploadBlobs et le champ UploadFileList dans le fichier StorageAccountViewModel.cs. Vous pouvez le modifier comme vous le souhaitez. J'ai peut-être fait des fautes d'orthographe:/Je suis vraiment désolé mais ce n'est que ma recommandation.

5
Serkan Yılmaz