Pergunta

Como criar um subdirectory em um recipiente de blob

por exemplo,

no meu recipiente de bolhas http://veda.blob.core.windows.net/document/

Se eu armazenar alguns arquivos, será

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

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

Agora, como criar um subdirectory

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

Para que eu possa armazenar arquivos

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

Foi útil?

Solução

Para adicionar ao que Egon disse, basta criar seu blob chamado "pasta/1.txt" e funcionará. Não há necessidade de criar um diretório.

Outras dicas

Na verdade, existe apenas uma única camada de recipientes. Você pode praticamente criar um "sistema de arquivos" como armazenamento em camadas, mas, na realidade, tudo estará em 1 camada, o contêiner em que está.

Para criar um "sistema de arquivo" virtual como armazenamento, você pode ter nomes de blob que contêm um '/' para que você possa fazer o que quiser com a maneira como armazena. Além disso, o melhor é que você pode procurar um blob em um nível virtual, dando uma string parcial, até um '/'.

Essas duas coisas, adicionando um '/' a um caminho e uma string parcial para pesquisa, juntas criam um armazenamento virtual de "sistema de arquivo".

Há um comentário de @afr0 perguntando como filtrar nas pastas ..

Há duas maneiras de usar o GetDirectoryReference ou loop através de um recipiente Blobs e verificando o tipo. O código abaixo está em 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);
    }
}

Leia isso para obter uma cobertura mais aprofundada: http://www.codeproject.com/articles/297052/azure-storage-blobs-serveice-working-with-directori

No portal do Azure, temos a opção abaixo ao fazer o upload do arquivo:

enter image description here

Se você usar Microsoft Azure Storage Explorer, existe um botão "nova pasta" que permite criar uma pasta em um contêiner. Esta é realmente uma pasta virtual:

enter image description here

Como @Egon mencionado acima, não há gerenciamento de pastas real no armazenamento de blob.

Você pode obter alguns recursos de um sistema de arquivos usando '/' no nome do arquivo, mas isso tem muitas limitações (por exemplo, o que acontece se você precisar renomear uma "pasta"?).

Como regra geral, eu manteria meus arquivos o mais plano possível Em um contêiner e peça ao meu aplicativo gerenciar qualquer estrutura que eu queira expor aos usuários finais (por exemplo, gerencie uma estrutura de pasta aninhada no meu banco de dados, tenha um registro para cada arquivo, referenciando o blob usando o nome de contêiner e o nome do arquivo).

Você não precisa criar subdirectory. Basta criar contêiner de blob e usar o nome do arquivo como a variável nome do arquivo Como abaixo, o código:

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

Veja como eu faço isso no CoffeeScript no Node.js:

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

Tenho um problema semelhante ao tentar amostra do Azure Primeiro servidor-app.
Aqui estão as informações de como resolvi removendo na frente da $ Web.

NOTA: O $ Web Container foi criado automaticamente enquanto habilita o site estático. Nunca vi $ raiz contêiner em qualquer lugar.

//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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top