Comment créer un sous-répertoire dans un conteneur d'objets blob
par exemple,
dans mon conteneur d'objet blob http://veda.blob.core.windows.net/document/
Si je stocke des fichiers, ce sera
Maintenant, comment créer un sous-répertoire
Pour que je puisse stocker des fichiers
Pour ajouter à ce que Egon a dit, créez simplement votre blob appelé "folder/1.txt", et cela fonctionnera. Pas besoin de créer un répertoire.
Il n'y a en réalité qu'une seule couche de conteneurs. Vous pouvez créer virtuellement un "système de fichiers" comme un stockage en couches, mais en réalité, tout se trouvera dans une couche, le conteneur dans lequel il se trouve.
Pour créer un "système de fichiers" virtuel comme le stockage, vous pouvez avoir des noms d'objet blob contenant un "/" afin de pouvoir faire ce que vous voulez avec la façon dont vous stockez. En outre, l’atout majeur est que vous pouvez rechercher un blob à un niveau virtuel, en donnant une chaîne partielle, jusqu’à un '/'.
Ces 2 éléments, en ajoutant un "/" à un chemin et une chaîne partielle pour la recherche, créent ensemble un stockage "système de fichiers" virtuel.
Il y a un commentaire de @ afr0 qui demande comment filtrer les dossiers.
Il existe deux manières d'utiliser la variable GetDirectoryReference
ou de parcourir les blobs de conteneurs 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 approfondie: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-Working-with-Directori
Si vous utilisez Microsoft Azure Storage Explorer , un bouton "Nouveau dossier" vous permet de créer un dossier dans un conteneur . Il s'agit en fait d'un dossier virtuel:
Vous n'avez pas besoin de créer un sous-répertoire. Il suffit de créer un conteneur blob et d’utiliser un nom de fichier tel que la variable nom du fichier comme code ci-dessous:
string filename = "document/tech/user-guide.pdf";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);
blob.StreamWriteSizeInBytes = 20 * 1024;
blob.UploadFromStream(fileStream); // fileStream is System.IO.Stream
Comme @Egon mentionné ci-dessus, il n'y a pas de réelle gestion de dossiers dans le stockage BLOB.
Vous pouvez obtenir certaines fonctionnalités d'un système de fichiers en utilisant "/" dans le nom du fichier, mais cela comporte de nombreuses limitations (par exemple, que se passe-t-il si vous devez renommer un "dossier"?).
En règle générale, je garderais mes fichiers aussi plat que possible dans un conteneur et laisser mon application gérer la structure que je souhaite exposer aux utilisateurs finaux (par exemple, gérer une structure de dossiers imbriquée dans ma base de données). , avoir un enregistrement pour chaque fichier, référençant le BLOB en utilisant nom de conteneur et nom de fichier).
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
Vous rencontrez un problème similaire en essayant Azure Sample first-serverless-app .
Voici les informations sur la résolution de ce problème en supprimant\devant $ web.
Remarque: Le conteneur $ web a été créé automatiquement lors de l'activation du site Web statique. Jamais vu $ conteneur racine nulle part.
//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