Domanda

Come creare una 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 sottodirectory

  

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

In modo che posso archiviare file

  

http://veda.blob.core.windows.net/ documento / cartella / 1.txt

È stato utile?

Soluzione

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

Altri suggerimenti

V'è in realtà solo un singolo strato di contenitori. È praticamente possibile creare un "file system", come lo stoccaggio a strati, ma in realtà tutto sarà in 1 strato, il contenitore in cui si trova.

Per la creazione di un virtuale "file-system", come lo stoccaggio, si può avere nomi BLOB che contengono un '/' in modo che si può fare quello che ti piace con il modo in cui si memorizzano. Inoltre, la cosa bella è che si può cercare un blob a livello virtuale, dando una stringa parziale, fino ad un '/'.

Queste 2 cose, l'aggiunta di un '/' per un percorso e una stringa parziale per la ricerca, insieme a creare uno storage virtuale "del file system".

C'è un commento di @ afr0 chiedendo come filtro su cartelle ..

Ci sono due modi utilizzando la GetDirectoryReference o di rimagliatura mediante un container blob e controllo del 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

In Azure Portal abbiamo sotto opzione, mentre il caricamento dei file:

 entrare descrizione dell'immagine qui

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

entrare descrizione dell'immagine qui

Come @Egon accennato in precedenza, non c'è una vera gestione delle cartelle in deposito BLOB.

È possibile ottenere alcune caratteristiche di un file system usando '/' nel nome del file, ma questo ha molti limiti (per esempio, cosa succede se avete bisogno di rinominare una "cartella"?).

Come regola generale, vorrei mantenere i miei file più piatta possibile in un contenitore, e hanno la mia applicazione gestire qualunque sia la struttura che voglio esporre agli utenti finali (ad esempio gestire una cartella annidata struttura nel mio database , un record per ogni file, fa riferimento alla BLOB utilizzando contenitore nome e file-name).

Non è necessario creare sottodirectory. Basta creare il contenitore blob e il nome del file come l'uso della variabile filename , come di seguito il codice:

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

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

Si è problema simile durante il tentativo Azure Esempio prima serverless-app .
Ecco le informazioni di come ho risolto rimuovendo \ a fronte di $ web.

Nota: contenitore web $ è stato creato automaticamente durante abilitare sito web statico. Mai visto $ ovunque contenitore principale.

//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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top