예제 #1
0
파일: Storage.cs 프로젝트: ed47/ED47.Stack
        public static bool RemoveDirectoryLayers(string containerName, string directoryName)
        {
            var client    = StorageAccount.CreateCloudBlobClient();
            var container = client.GetContainerReference(containerName.ToLower());

            if (!container.Exists())
            {
                return(false);
            }

            var directory = container.GetDirectoryReference(directoryName.Substring(0));

            CloudBlobDirectory dira = container.GetDirectoryReference("images");
            CloudBlobDirectory dirb = dira.GetSubdirectoryReference("layers");
            CloudBlobDirectory dirc = dirb.GetSubdirectoryReference(directoryName);

            var blobs = dirc.ListBlobs().ToList();

            foreach (var blob in blobs)
            {
                if (blob is ICloudBlob)
                {
                    ((ICloudBlob)blob).DeleteIfExists();
                }
                else if (blob is CloudBlobDirectory)
                {
                    var dird     = blob as CloudBlobDirectory;
                    var subBlobs = dird.ListBlobs().ToList();
                    foreach (var subblob in subBlobs)
                    {
                        var cloudBlob = subblob as ICloudBlob;
                        if (cloudBlob != null)
                        {
                            cloudBlob.DeleteIfExists();
                        }
                    }
                }
            }



            return(true);
        }
예제 #2
0
        public void BlobTypesWithStorageUri()
        {
            StorageUri endpoint = new StorageUri(
                new Uri("http://" + AccountName + BlobService + EndpointSuffix),
                new Uri("http://" + AccountName + SecondarySuffix + BlobService + EndpointSuffix));

            CloudBlobClient client = new CloudBlobClient(endpoint, new StorageCredentials());

            Assert.IsTrue(endpoint.Equals(client.StorageUri));
            Assert.IsTrue(endpoint.PrimaryUri.Equals(client.BaseUri));

            StorageUri containerUri = new StorageUri(
                new Uri(endpoint.PrimaryUri + "container"),
                new Uri(endpoint.SecondaryUri + "container"));

            CloudBlobContainer container = client.GetContainerReference("container");

            Assert.IsTrue(containerUri.Equals(container.StorageUri));
            Assert.IsTrue(containerUri.PrimaryUri.Equals(container.Uri));
            Assert.IsTrue(endpoint.Equals(container.ServiceClient.StorageUri));

            container = new CloudBlobContainer(containerUri, client.Credentials);
            Assert.IsTrue(containerUri.Equals(container.StorageUri));
            Assert.IsTrue(containerUri.PrimaryUri.Equals(container.Uri));
            Assert.IsTrue(endpoint.Equals(container.ServiceClient.StorageUri));

            StorageUri directoryUri = new StorageUri(
                new Uri(containerUri.PrimaryUri + "/directory/"),
                new Uri(containerUri.SecondaryUri + "/directory/"));

            StorageUri subdirectoryUri = new StorageUri(
                new Uri(directoryUri.PrimaryUri + "subdirectory/"),
                new Uri(directoryUri.SecondaryUri + "subdirectory/"));

            CloudBlobDirectory directory = container.GetDirectoryReference("directory");

            Assert.IsTrue(directoryUri.Equals(directory.StorageUri));
            Assert.IsTrue(directoryUri.PrimaryUri.Equals(directory.Uri));
            Assert.IsNotNull(directory.Parent);
            Assert.IsTrue(containerUri.Equals(directory.Container.StorageUri));
            Assert.IsTrue(endpoint.Equals(directory.ServiceClient.StorageUri));

            CloudBlobDirectory subdirectory = directory.GetSubdirectoryReference("subdirectory");

            Assert.IsTrue(subdirectoryUri.Equals(subdirectory.StorageUri));
            Assert.IsTrue(subdirectoryUri.PrimaryUri.Equals(subdirectory.Uri));
            Assert.IsTrue(directoryUri.Equals(subdirectory.Parent.StorageUri));
            Assert.IsTrue(containerUri.Equals(subdirectory.Container.StorageUri));
            Assert.IsTrue(endpoint.Equals(subdirectory.ServiceClient.StorageUri));

            StorageUri blobUri = new StorageUri(
                new Uri(subdirectoryUri.PrimaryUri + "blob"),
                new Uri(subdirectoryUri.SecondaryUri + "blob"));

            CloudBlockBlob blockBlob = subdirectory.GetBlockBlobReference("blob");

            Assert.IsTrue(blobUri.Equals(blockBlob.StorageUri));
            Assert.IsTrue(blobUri.PrimaryUri.Equals(blockBlob.Uri));
            Assert.IsTrue(subdirectoryUri.Equals(blockBlob.Parent.StorageUri));
            Assert.IsTrue(containerUri.Equals(blockBlob.Container.StorageUri));
            Assert.IsTrue(endpoint.Equals(blockBlob.ServiceClient.StorageUri));

            blockBlob = new CloudBlockBlob(blobUri, null, client.Credentials);
            Assert.IsTrue(blobUri.Equals(blockBlob.StorageUri));
            Assert.IsTrue(blobUri.PrimaryUri.Equals(blockBlob.Uri));
            Assert.IsTrue(subdirectoryUri.Equals(blockBlob.Parent.StorageUri));
            Assert.IsTrue(containerUri.Equals(blockBlob.Container.StorageUri));
            Assert.IsTrue(endpoint.Equals(blockBlob.ServiceClient.StorageUri));

            CloudPageBlob pageBlob = subdirectory.GetPageBlobReference("blob");

            Assert.IsTrue(blobUri.Equals(pageBlob.StorageUri));
            Assert.IsTrue(blobUri.PrimaryUri.Equals(pageBlob.Uri));
            Assert.IsTrue(subdirectoryUri.Equals(pageBlob.Parent.StorageUri));
            Assert.IsTrue(containerUri.Equals(pageBlob.Container.StorageUri));
            Assert.IsTrue(endpoint.Equals(pageBlob.ServiceClient.StorageUri));

            pageBlob = new CloudPageBlob(blobUri, null, client.Credentials);
            Assert.IsTrue(blobUri.Equals(pageBlob.StorageUri));
            Assert.IsTrue(blobUri.PrimaryUri.Equals(pageBlob.Uri));
            Assert.IsTrue(subdirectoryUri.Equals(pageBlob.Parent.StorageUri));
            Assert.IsTrue(containerUri.Equals(pageBlob.Container.StorageUri));
            Assert.IsTrue(endpoint.Equals(pageBlob.ServiceClient.StorageUri));
        }