public static MediaContent BlobToMediaContent(this CloudBlob blob, MediaContent mediaContent) { if (!string.IsNullOrEmpty(blob.Metadata["Published"])) { mediaContent.Published = bool.Parse(blob.Metadata["Published"]); } if (!string.IsNullOrEmpty(blob.Metadata["Size"])) { mediaContent.Size = int.Parse(blob.Metadata["Size"]); } mediaContent.FileName = StorageNamesEncoder.DecodeBlobName(blob.Metadata["FileName"]); mediaContent.UserKey = mediaContent.FileName; mediaContent.UUID = mediaContent.FileName; mediaContent.UserId = blob.Metadata["UserId"]; mediaContent.VirtualPath = blob.Uri.ToString(); if (mediaContent.Metadata == null) { mediaContent.Metadata = new MediaContentMetadata(); } mediaContent.Metadata.AlternateText = StorageNamesEncoder.DecodeBlobName(blob.Metadata["AlternateText"]); mediaContent.Metadata.Description = StorageNamesEncoder.DecodeBlobName(blob.Metadata["Description"]); mediaContent.Metadata.Title = StorageNamesEncoder.DecodeBlobName(blob.Metadata["Title"]); return(mediaContent); }
private void zipFolder(CloudBlobClient blobClient, string basePrefix, string folderName, string zipDir, ref ZipFile zipFile) { zipDir = string.IsNullOrEmpty(zipDir) ? folderName : zipDir + "/" + folderName; zipFile.AddDirectoryByName(zipDir); var folderPrefix = basePrefix + StorageNamesEncoder.EncodeBlobName(folderName) + "/"; var blobs = blobClient.ListBlobsWithPrefix(folderPrefix, new BlobRequestOptions() { BlobListingDetails = Microsoft.WindowsAzure.StorageClient.BlobListingDetails.Metadata, UseFlatBlobListing = false }); foreach (var blob in blobs) { if (blob is CloudBlobDirectory) { var dir = blob as CloudBlobDirectory; var names = dir.Uri.ToString().Split('/'); for (var i = names.Length - 1; i >= 0; i--) { if (!string.IsNullOrEmpty(names[i])) { zipFolder(blobClient, folderPrefix, StorageNamesEncoder.DecodeBlobName(names[i]), zipDir, ref zipFile); break; } } } if (blob is CloudBlob) { var cloudBlob = blob as CloudBlob; var subStr = cloudBlob.Uri.ToString().Substring(cloudBlob.Uri.ToString().IndexOf(folderPrefix) + folderPrefix.Length); var index = subStr.LastIndexOf('/'); if (index < 0) { index = 0; } var subFolderName = subStr.Substring(0, index); var fileName = subStr.Substring(index); var bytes = cloudBlob.DownloadByteArray(); if (!string.IsNullOrEmpty(subFolderName)) { zipFile.AddDirectoryByName(zipDir + "/" + StorageNamesEncoder.DecodeBlobName(subFolderName)); } zipFile.AddEntry(zipDir + "/" + StorageNamesEncoder.DecodeBlobName(subStr), bytes); } } }