2010-04-11 8 views
48

Come creare una sottodirectory in un contenitore blobWindows Azure: Come creare sottodirectory in un contenitore blob

per esempio,

nel mio contenitore blob http://veda.blob.core.windows.net/document/

Se devo conservare alcuni file sarà

http://veda.blob.core.windows.net/document/1.txt

http://veda.blob.core.windows.net/document/2.txt

Ora, come creare una directory sub

http://veda.blob.core.windows.net/document/folder/

In modo che posso memorizzare file

http://veda.blob.core.windows.net/document/folder/1.txt

risposta

73

Per aggiungere a quello che ha detto Egon, è sufficiente creare il blob chiamato "folder/1.txt" e funzionerà. Non c'è bisogno di creare una directory.

+2

come filtra o ottieni tutti questi file dalla "cartella"? – afr0

+1

leggi la mia risposta qui sotto @ afr0 – AntonB

+0

Questo non funziona per me, dice che i contenitori non possono usare altro che caratteri minuscoli, trattini, numeri. Lo stesso per i nomi dei file –

24

In realtà c'è solo un singolo livello di contenitori. È possibile creare virtualmente un "file system" come storage a livelli, ma in realtà tutto sarà in 1 layer, il contenitore in cui si trova.

Per creare un "file system" virtuale come la memoria, è possibile avere nomi di blob che contengono un '/' in modo da poter eseguire qualsiasi cosa nel modo in cui si memorizza. Inoltre, il bello è che puoi cercare un blob a livello virtuale, dando una stringa parziale, fino a un '/'.

Queste 2 cose, aggiungendo un '/' a un percorso e una stringa parziale per la ricerca, creano insieme una memoria virtuale "file-system".

+0

Puoi condividere esempio C#? blob.Il nome è una proprietà di sola lettura quindi non siamo in grado di creare un blob.Name con "/" – ABB

13

C'è un commento di @ afr0 chiedendo come filtrare le cartelle ..

Ci sono due modi utilizzando il GetDirectoryReference o loop attraverso un container blob e verifica il tipo. Il seguente codice è in 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); 
    } 
} 

leggere questo per di più in approfondimenti: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori

+1

Questa dovrebbe essere la risposta alla data odierna. +1 – MickyD

0

Ecco come lo faccio in CoffeeScript il Node.JS:

blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)-> 
    if err 
     console.log 'failed to create path', err 
    else 
     console.log 'created path', path, result 
2

Se si utilizza Microsoft Azure Storage Explorer, c'è un pulsante "Nuova cartella" che ti permette di creare una cartella in un contenitore. Questo è in realtà una cartella virtuale:

enter image description here

3

In Azure Portal abbiamo seguito l'opzione durante il caricamento di file:

enter image description here

Problemi correlati