Bir blob kapsayıcısında alt dizin oluşturma
Örneğin,
blob kapsayıcımda http://veda.blob.core.windows.net/document/
Bazı dosyaları saklarsam,
Şimdi, bir alt dizin nasıl oluşturulur
Böylece dosyaları saklayabilirim
Bir blob kapsayıcısında alt dizin oluşturma
Örneğin,
blob kapsayıcımda http://veda.blob.core.windows.net/document/
Bazı dosyaları saklarsam,
Şimdi, bir alt dizin nasıl oluşturulur
Böylece dosyaları saklayabilirim
Yanıtlar:
Egon'un söylediklerine eklemek için, "klasör / 1.txt" adlı blobunuzu oluşturmanız yeterlidir, işe yarayacaktır. Bir dizin oluşturmanıza gerek yok.
Aslında sadece tek bir kap tabakası var. Katmanlı depolama gibi neredeyse bir "dosya sistemi" oluşturabilirsiniz, ancak gerçekte her şey, içinde bulunduğu kap olan 1 katman içinde olacaktır.
Depolama gibi sanal bir "dosya sistemi" oluşturmak için, "/" içeren blob adlarına sahip olabilirsiniz, böylece depolama şeklinizle istediğinizi yapabilirsiniz. Ayrıca, harika olan şey, '/' değerine kadar kısmi bir dize vererek sanal düzeyde bir blob arayabilmenizdir.
Bir yola '/' ve arama için kısmi bir dize ekleyen bu 2 şey, birlikte sanal bir "dosya sistemi" deposu oluşturur.
@ Afr0 tarafından klasörlere nasıl filtre uygulanacağını soran bir yorum var ..
GetDirectoryReference
Kapsayıcı bloblarını veya döngülerini kullanmanın ve türünü kontrol etmenin iki yolu vardır . Aşağıdaki kod C # dilinde
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);
}
}
daha ayrıntılı bilgi için bunu okuyun: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori
Eğer kullanırsanız Microsoft Azure Depolama Explorer , bir kap içinde bir klasör oluşturmak için olanak sağlayan bir "Yeni Klasör" düğmesi yok. Bu aslında sanal bir klasördür:
Alt dizin oluşturmanıza gerek yoktur. Sadece blob kapsayıcısı oluşturun ve aşağıdaki kod gibi değişken dosya adı gibi dosya adını kullanın :
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
@Egon yukarıda belirtildiği gibi, BLOB depolamada gerçek bir klasör yönetimi yoktur.
Dosya adında '/' kullanarak bir dosya sisteminin bazı özelliklerini elde edebilirsiniz, ancak bunun birçok sınırlaması vardır (örneğin, bir "klasörü" yeniden adlandırmanız gerekirse ne olur?).
Genel bir kural olarak, dosyalarımı bir kapsayıcıda olabildiğince düz tutardım ve son kullanıcılara göstermek istediğim her yapıyı uygulamamın yönetmesini isterim (örneğin , veritabanımdaki iç içe klasör yapısını yönetmek , her biri için bir kayıt bulundurmak) dosya, kapsayıcı adı ve dosya adı kullanarak BLOB'a referans verir).
Azure Sample ilk sunucusuz uygulamayı denerken benzer bir sorunla karşılaştım .
$ Web'in önünde \ atarak nasıl çözdüğümle ilgili bilgi burada.
Not: Statik web sitesi etkinleştirilirken $ web konteyneri otomatik olarak oluşturuldu. Hiçbir yerde $ root kapsayıcı görmedim.
//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
Node.JS'de CoffeeScript'te bunu şu şekilde yapıyorum:
blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
if err
console.log 'failed to create path', err
else
console.log 'created path', path, result
C#