75 votes

Comment créer un sous-conteneur dans azure storage location

Comment puis-je créer un sous-conteneur dans l'emplacement de stockage azur ?

130voto

tobint Points 789

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

Par exemple, vous pouvez créer un conteneur nommé "content" et y créer des blobs portant les noms suivants :

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 que ces blobs sont une liste plate par rapport à votre conteneur "content". Cela dit, l'utilisation de "/" comme délimiteur conventionnel vous offre la possibilité de les parcourir de manière hiérarchique.

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 l'appeler comme suit :

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

Nota l'utilisation de GetBlobDirectoryReference y GetSubDirectory et les 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 ]

16 votes

Veuillez noter qu'à partir de la version 2.0 du SDK, la fonction GetBlobDirectoryReference ne fonctionne pas. Au lieu de cela, nous pouvons utiliser ce qui suit : CloudBlobContainer container = cloudBlobClient.GetContainerReference(directoryName); CloudBlobDirectory subDirectory = container.GetDirectoryReference(subDirectoryName); etc...

3 votes

Existe-t-il une implémentation PHP de ce concept ?

0 votes

C'est censé être cloudBlobClient o client dans vos appels de fonction ?

15voto

David Makogon Points 28933

Faites-vous référence au stockage de type blob ? Si oui, 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 de blob pour simuler des conteneurs imbriqués dans l'URI. Voir cet article sur MSDN pour les détails de la dénomination.

6voto

Serkan Yılmaz Points 76

Je suis d'accord avec la réponse de Tobin et je veux ajouter quelque chose à cette situation parce que j'ai également J'ai besoin de la même façon de télécharger mes jeux html à Azure Storage avec la création de ces répertoires :

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

Après vos recommandations, j'ai essayé de télécharger mon contenu avec l'outil Azure Storage Explorer et vous pouvez télécharger l'outil et le code source avec cette url : Explorateur de stockage Azure

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

Enfin, j'ai débogué 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. J'ai peut-être fait des fautes d'orthographe :/ Je suis vraiment désolé mais ce n'est que ma recommandation.

5voto

Antony Points 537

Si vous essayez de télécharger des fichiers à partir du portail Azure : Pour créer un sous-dossier dans le conteneur, lors du téléchargement d'un fichier, vous pouvez aller dans les options avancées et sélectionner le téléchargement vers un dossier, ce qui créera un nouveau dossier dans le conteneur et téléchargera le fichier dans celui-ci.

-1voto

ABB Points 494

Exemple de code

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X