2016-01-11 11 views
6

bir Azure blob kapsayıcı içindeki bir klasörü nasıl silinir (aşağıdaki anlık bakınız):Ben Azure'de bir damla konteyner içindeki çeşitli klasörleri vardır <code>pictures</code> denilen var

enter image description here

ben silmeye çalışıyorum anlık görüntüde gösterilen users ve uploads başlıklı klasörler, ancak hatayı saklıyorum: Failed to delete blob pictures/uploads/. Error: The specified blob does not exist. Bu iki klasörü nasıl silebileceğime ışık tutabilir misiniz? Bu sorunu yönetme yoluyla anlamlı bir şeyi ortaya çıkaramadım.

Not: "klasörler" aslında yoklar çünkü bunu

+1

deneyin bu istemci https://azurestorageexplorer.codeplex.com/ –

cevap

10

Windows Azure Blob Storage'de klasör kavramı yok. Hiyerarşi çok basit: depolama hesabı> container> blob. Aslında, belirli bir klasörü kaldırmak, klasör adıyla başlayan tüm lekeleri kaldırır. Eğer klasörleri silmek için aşağıdaki basit kod yazabilirsiniz:

 CloudStorageAccount storageAccount = CloudStorageAccount.Parse("your storage account"); 
     CloudBlobContainer container = storageAccount.CreateCloudBlobClient().GetContainerReference("pictures"); 
     foreach (IListBlobItem blob in container.GetDirectoryReference("users").ListBlobs(true)) 
     { 
      if (blob.GetType() == typeof(CloudBlob) || blob.GetType().BaseType == typeof(CloudBlob)) 
      { 
       ((CloudBlob)blob).DeleteIfExists(); 
      } 
     } 

container.GetDirectoryReference ("kullanıcılar") ListBlobs (doğru) listeleri lekeler "resmi" kapsayıcı içindeki "kullanıcılar" ile başlar. Daha sonra bunları ayrı ayrı silebilirsiniz. Diğer klasörleri silmek için, sadece bu GetDirectoryReference ("klasör adınız") gibi belirtmeniz gerekir.

6

Onun ihtiyaç halinde daha fazla bilgi için bana sor. Bir Azure depolama hesabında, bloblarla dolu kapsayıcılarınız var. Müşteriler tarafından "klasörler" olarak görüntülenenleri gördüğünüz şey, "resim/karşıya yükleme /" hesabındaki blobların dosya adlarıdır. "Klasörü" kaldırmak isterseniz, aslında aynı "yol" ile adlandırılan blobların her birini kaldırmak zorunda.

En yaygın yaklaşım, bu blobların bir listesini almak ve ardından bunu blob çağrısını silmek içindir.

+0

Tamam kullanmak, ancak silme damla çağrı ölçeği için, diyelim ki, 20M nesneleri yapar? –

+0

"ölçek" bir göreli terimdir. Tüm 20M blobları silebilir misin? evet, 1 saniyede yapabilir misin? yok hayır. Depolama API'sı kısıtlamasının sınırlarına tabi olacaksınız. – BrentDaCodeMonkey

1

Ayrıca Microsoft'tan bir masaüstü depolama gezgini de vardır. Sanal klasörü seçebileceğiniz ve tüm alt blobları etkin bir şekilde silerek etkin bir şekilde silebileceğiniz bir özellik vardır.

https://azure.microsoft.com/en-us/features/storage-explorer/

+0

Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Yorum yazıla] (/ review/düşük kaliteli yazılar/18234969) – Ploppy

+0

Teşekkürler @Ploppy Yorumumu güncelledim – stueynet

İlgili konular