Como criar um subdiretório em um contêiner de blob
por exemplo,
no meu contêiner de blob http://veda.blob.core.windows.net/document/
Se eu armazenar alguns arquivos, será
Agora, como criar um subdiretório
Para que eu possa armazenar arquivos
Como criar um subdiretório em um contêiner de blob
por exemplo,
no meu contêiner de blob http://veda.blob.core.windows.net/document/
Se eu armazenar alguns arquivos, será
Agora, como criar um subdiretório
Para que eu possa armazenar arquivos
Respostas:
Para complementar o que Egon disse, basta criar seu blob chamado "folder / 1.txt" e ele funcionará. Não há necessidade de criar um diretório.
Na verdade, há apenas uma única camada de recipientes. Você pode criar virtualmente um "sistema de arquivos" como armazenamento em camadas, mas na realidade tudo estará em uma camada, o contêiner em que está.
Para criar um "sistema de arquivos" virtual como armazenamento, você pode ter nomes de blob que contenham uma '/' para que você possa fazer o que quiser com a maneira como armazena. Além disso, a grande coisa é que você pode pesquisar um blob em um nível virtual, dando uma string parcial, até um '/'.
Essas 2 coisas, adicionando uma '/' a um caminho e uma string parcial para pesquisa, juntas criam um armazenamento de "sistema de arquivos" virtual.
Há um comentário de @ afr0 perguntando como filtrar as pastas.
Há duas maneiras de usar GetDirectoryReference
ou percorrer os blobs de contêineres e verificar 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 isto para uma cobertura mais detalhada: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori
Se você usar o Explorador de Armazenamento do Microsoft Azure , há um botão "Nova Pasta" que permite criar uma pasta em um contêiner. Na verdade, esta é uma pasta virtual:
Você não precisa criar um subdiretório. Basta criar recipiente blob eo nome do arquivo uso como a variável de nome de arquivo como o código abaixo:
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
Como @Egon mencionou acima, não há gerenciamento de pasta real no armazenamento 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 acontecerá se você precisar renomear uma "pasta"?).
Como regra geral, eu manteria meus arquivos o mais simples possível em um contêiner e faria meu aplicativo gerenciar qualquer estrutura que desejo expor aos usuários finais (por exemplo, gerenciar uma estrutura de pasta aninhada em meu banco de dados , ter um registro para cada , referenciando o BLOB usando o nome do contêiner e o nome do arquivo).
Tive um problema semelhante ao tentar o primeiro aplicativo sem servidor de amostra do Azure .
Aqui está a informação de como resolvi removendo \ da frente de $ web.
Nota: $ web container foi criado automaticamente ao habilitar o site estático. Nunca vi $ root container 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
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
C#