Question

Comment créer un sous-répertoire dans un conteneur blob

par exemple,

dans mon conteneur blob http://veda.blob.core.windows.net/document /

Si je stocke 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 /

Alors que je peux stocker des fichiers

  

http://veda.blob.core.windows.net/ documents / dossier / 1.txt

Était-ce utile?

La solution

Pour ajouter à ce que Egon dit, il suffit de créer votre blob appelé « dossier / 1.txt », et cela fonctionnera. Pas besoin de créer un répertoire.

Autres conseils

Il est en fait une seule couche de conteneurs. Vous pouvez pratiquement créer un « système de fichiers » comme le stockage en couches, mais en réalité, tout sera en couche 1, le récipient dans lequel il est.

Pour la création d'un « système de fichiers » virtuel comme le stockage, vous pouvez avoir des noms de blob qui contiennent un « / » afin que vous puissiez faire tout ce que vous aimez la façon dont vous stockez. En outre, la grande chose est que vous pouvez rechercher un blob à un niveau virtuel, en donnant une chaîne partielle, jusqu'à un « / ».

Ces 2 choses, en ajoutant un « / » à un chemin et une chaîne partielle pour la recherche, ainsi que de créer un stockage « système de fichiers » virtuel.

Il y a un commentaire par @ afr0 demandant comment filtrer sur les dossiers ..

Il y a deux façons en utilisant le GetDirectoryReference ou par un looping blobs de conteneurs et de contrôle du 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);
    }
}

lire ce pour plus d'une couverture approfondie: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori

Dans Portal Azure, nous avons ci-dessous l'option alors que le fichier de téléchargement:

 entrer image description ici

Si vous utilisez Microsoft Azure Storage Explorateur, il y a un bouton « Nouveau dossier » qui vous permet de créer un dossier dans un récipient. Ceci est en fait un dossier virtuel:

Comme @Egon mentionné ci-dessus, il n'y a pas une véritable gestion des dossiers dans le stockage BLOB.

Vous pouvez obtenir des caractéristiques d'un système de fichiers en utilisant « / » dans le nom du fichier, mais cela a de nombreuses limites (par exemple, ce qui se passe si vous avez besoin de renommer un « dossier »?).

En règle générale, je garderais mes fichiers aussi plat que possible dans un récipient, et que ma demande soit gérer quelle que soit la structure que je veux exposer aux utilisateurs finaux (par exemple gérer un dossier imbriqué la structure dans ma base de données , un dossier pour chaque fichier, faisant référence au blob à l'aide conteneur nom et nom de fichier).

Vous n'avez pas besoin de créer sous-répertoire. Il suffit de créer conteneur blob et le nom du fichier à la variable comme nom comme ci-dessous le code:

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

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 en essayant Azure Sample première Serverless-app .
Voici les informations de la façon dont je résolus en supprimant \ à l'avant de $ web.

Remarque: conteneur Web $ a été créé automatiquement en activer site Web statique. Jamais vu $ conteneur racine partout.

//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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top