Windows Azure: comment créer un sous-répertoire dans un conteneur blob
comment créer un sous-répertoire dans un conteneur blob
par exemple,
dans mon blob container http://veda.blob.core.windows.net/document /
Si je stocker des fichiers, il sera
http://veda.blob.core.windows.net/document/1.txt
http://veda.blob.core.windows.net/document/2.txt
Maintenant, comment créer un sous-répertoire
http://veda.blob.core.windows.net/document/folder /
pour que je puisse stocker des fichiers
http://veda.blob.core.windows.net/document/folder/1.txt
8 réponses
pour ajouter à ce que Egon a dit, il suffit de créer votre blob appelé" folder/1.txt", et ça va marcher. Pas besoin de créer un répertoire.
il n'y a en fait qu'une seule couche de conteneurs. Vous pouvez virtuellement créer un" système de fichiers " comme stockage stratifié, mais en réalité tout sera en 1 couche, le conteneur dans lequel il est.
pour créer un" système de fichiers " virtuel comme le stockage, vous pouvez avoir des noms de blob qui contiennent un '/' de sorte que vous pouvez faire ce que vous voulez avec la façon dont vous stockez. Aussi, la grande chose est que vous pouvez rechercher d'une goutte à l'virtuelles, en donnant une chaîne partielle, jusqu'à un.'/'
ces deux choses, en ajoutant un '/' à un chemin et une chaîne partielle pour la recherche, créent ensemble un" système de fichiers " virtuel de stockage.
il y a un commentaire de @afr0 demandant comment filtrer sur les dossiers..
il y a deux façons d'utiliser le GetDirectoryReference
ou en boucle à travers un conteneur blobs et de vérifier le type. Le code ci-dessous est en C#
CloudBlobContainer container = blobClient.GetContainerReference("photos");
//Method 1. grab a folder reference directly from the container
CloudBlobDirectory folder = container.GetDirectoryReference("directoryName");
//Method 2. Loop over container and grab folders.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
if (item.GetType() == typeof(CloudBlobDirectory))
{
// we know this is a sub directory now
CloudBlobDirectory subFolder = (CloudBlobDirectory)item;
Console.WriteLine("Directory: {0}", subFolder.Uri);
}
}
lisez ceci pour une couverture plus détaillée: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori
si vous utilisez Microsoft Azure Storage Explorer , il y a un bouton" Nouveau dossier " qui vous permet de créer un dossier dans un conteneur. Il s'agit en fait d'un dossier virtuel:
comme @Egon mentionné ci-dessus, il n'y a pas de véritable gestion des dossiers dans le stockage BLOB.
vous pouvez obtenir certaines fonctionnalités d'un système de fichiers en utilisant '/' dans le nom de fichier, mais cela a de nombreuses limites (par exemple, que se passe-t-il si vous avez besoin de renommer un "dossier"?).
en règle générale, je garderais mes fichiers aussi plats que possible dans un conteneur, et je demanderais à mon application de gérer n'importe quelle structure que je veux exposer à la fin les utilisateurs (par exemple gérer une structure de dossier imbriquée dans ma base de données , ont un enregistrement pour chaque fichier, en référençant le BLOB en utilisant conteneur-nom et file-nom).
Voici comment je le fais dans CoffeeScript sur Node.JS:
blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
if err
console.log 'failed to create path', err
else
console.log 'created path', path, result
Got problème similaire, tout en essayant d'Azur Échantillon premier-sans serveur-app .
Voici l'info de comment j'ai résolu en supprimant \ devant $web.
Note: $ le conteneur web a été créé automatiquement tout en activant le site Web statique. Jamais vu $conteneur racine de n'importe où.
//getting Invalid URI error while following tutorial as-is
az storage blob upload-batch -s . -d $web --account-name firststgaccount01
//Remove "\" @destination param
az storage blob upload-batch -s . -d $web --account-name firststgaccount01