Cómo crear un subdirectorio en un contenedor de blobs
por ejemplo,
en mi contenedor de blobs http://veda.blob.core.windows.net/document/
Si guardo algunos archivos, será
Ahora, cómo crear un subdirectorio
Para que pueda almacenar archivos
Cómo crear un subdirectorio en un contenedor de blobs
por ejemplo,
en mi contenedor de blobs http://veda.blob.core.windows.net/document/
Si guardo algunos archivos, será
Ahora, cómo crear un subdirectorio
Para que pueda almacenar archivos
Respuestas:
Para agregar a lo que dijo Egon, simplemente cree su blob llamado "carpeta / 1.txt", y funcionará. No es necesario crear un directorio.
En realidad, solo hay una capa de contenedores. Puede crear virtualmente un "sistema de archivos" como almacenamiento en capas, pero en realidad todo estará en 1 capa, el contenedor en el que se encuentra.
Para crear un almacenamiento virtual como un "sistema de archivos", puede tener nombres de blobs que contengan una '/' para que pueda hacer lo que quiera con la forma en que almacena. Además, lo mejor es que puede buscar un blob a nivel virtual, dando una cadena parcial, hasta una '/'.
Estas 2 cosas, agregando una '/' a una ruta y una cadena parcial para la búsqueda, juntas crean un almacenamiento virtual de "sistema de archivos".
Hay un comentario de @ afr0 que pregunta cómo filtrar por carpetas.
Hay dos formas de utilizar GetDirectoryReference
o recorrer un contenedor de blobs y comprobar el tipo. El siguiente código 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);
}
}
lea esto para obtener una cobertura más detallada: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori
Si usa Microsoft Azure Storage Explorer , hay un botón "Nueva carpeta" que le permite crear una carpeta en un contenedor. Esta es en realidad una carpeta virtual:
No es necesario crear un subdirectorio. Simplemente cree un contenedor de blobs y use el nombre de archivo como el nombre de archivo variable como el siguiente 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
Como @Egon mencionó anteriormente, no existe una administración de carpetas real en el almacenamiento BLOB.
Puede lograr algunas características de un sistema de archivos usando '/' en el nombre del archivo, pero esto tiene muchas limitaciones (por ejemplo, ¿qué sucede si necesita cambiar el nombre de una "carpeta"?).
Como regla general, mantendría mis archivos lo más planos posible en un contenedor y haría que mi aplicación administrara cualquier estructura que desee exponer a los usuarios finales (por ejemplo, administrar una estructura de carpetas anidadas en mi base de datos , tener un registro para cada file, haciendo referencia al BLOB usando el nombre del contenedor y el nombre del archivo).
Obtuve un problema similar al probar la primera aplicación sin servidor de Azure Sample .
Aquí está la información de cómo resolví eliminando \ al frente de $ web.
Nota: $ web container se creó automáticamente mientras se habilitaba el sitio web estático. Nunca he visto $ contenedor de raíz en ningún lado.
//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
Así es como lo hago en CoffeeScript en 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#