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); }
public bool Exists(string blobKey) { var container = CurrentCloudBlobClient.GetContainerReference(CurrentCloudBlobClient.BaseUri.AbsoluteUri); var cloudBlob = container.GetBlockBlobReference(blobKey); return(cloudBlob.Exists()); }
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(); }); }
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(); }); }