Beispiel #1
0
        public Folder CreateFolder(string folderName, string parentId = null)
        {
            string             folderTypeName = this._entityFactory.GetEntityTypeStringName(typeof(Folder));
            var                folder         = this._entityFactory.CreateEntityForType(folderTypeName) as Folder;
            CloudBlobContainer container;

            if (string.IsNullOrWhiteSpace(parentId))
            {
                container = CurrentCloudBlobClient.GetContainerReference(folderName.ToLower());
                container.CreateIfNotExists();
                MapCloudBlobContainer2Folder(container, folder);
            }
            else
            {
                var    path          = Combine(parentId, folderName);
                string containerName = GetContainer(path);
                string prefix        = GetPrefix(path);

                container = CurrentCloudBlobClient.GetContainerReference(containerName);

                if (!container.ListBlobs(prefix).Any())
                {
                    container.GetBlockBlobReference(Combine(prefix, DirectoryPlaceHolder)).UploadText(string.Empty);
                }
                var directory = container.GetDirectoryReference(prefix);

                MapCloudBlobDirectory2Folder(directory, folder);
            }

            ChangeTracker.Attach(folder);
            return(folder);
        }
Beispiel #2
0
        public bool Exists(string blobKey)
        {
            var container = CurrentCloudBlobClient.GetContainerReference(CurrentCloudBlobClient.BaseUri.AbsoluteUri);
            var cloudBlob = container.GetBlockBlobReference(blobKey);

            return(cloudBlob.Exists());
        }
Beispiel #3
0
        public void Delete(string id)
        {
            var container   = CurrentCloudBlobClient.GetContainerReference(GetContainer(id));
            var listOfBlobs = container.ListBlobs(GetPrefix(id));

            Parallel.ForEach(listOfBlobs, item =>
            {
                var blob = CurrentCloudBlobClient.GetBlobReferenceFromServer(item.StorageUri);
                blob.Delete();
            });
        }
Beispiel #4
0
        public void Rename(string id, string name)
        {
            var container = CurrentCloudBlobClient.GetContainerReference(GetContainer(id));
            var prefix    = GetPrefix(id);
            int index     = prefix.LastIndexOf(CurrentCloudBlobClient.DefaultDelimiter, 1, StringComparison.Ordinal);
            var names     = prefix.Split(new [] { CurrentCloudBlobClient.DefaultDelimiter }, StringSplitOptions.RemoveEmptyEntries);

            names[names.Length - 1] = name;
            var newPrefix = names.JoinStrings(CurrentCloudBlobClient.DefaultDelimiter);

            if (prefix.EndsWith(CurrentCloudBlobClient.DefaultDelimiter))
            {
                newPrefix += CurrentCloudBlobClient.DefaultDelimiter;
            }
            var listOfBlobs = container.ListBlobs(prefix);

            Parallel.ForEach(listOfBlobs, item =>
            {
                var oldBlob = CurrentCloudBlobClient.GetBlobReferenceFromServer(item.StorageUri);
                var newBlob = container.GetBlockBlobReference(oldBlob.Name.Replace(prefix, newPrefix));
                newBlob.StartCopyFromBlob(item.Uri);
                oldBlob.Delete();
            });
        }