private Attachment GetEmailAttachmentFromCloud(CloudFileInfo fileInfo, Stream stream) { var attachment = new Attachment(); attachment.FileName = fileInfo.Name; attachment.ContentType = fileInfo.ContentType; attachment.Data = stream; return(attachment); }
public async Task <IEnumerable <CloudFileInfo> > GetFileInfoListAsync(DirectoryPathBase path, bool includeDeleted = false) { var client = _account.CreateCloudBlobClient(); var container = client.GetContainerReference(path.GetContainerName()); var exists = await container.ExistsAsync(); if (!exists) { return(new List <CloudFileInfo>()); } var directory = container.GetDirectoryReference(path.GetDirectoryPath()); var items = new List <CloudFileInfo>(); BlobContinuationToken blobContinuationToken = null; do { var results = await container.ListBlobsSegmentedAsync(directory.Prefix, true, BlobListingDetails.None, null, blobContinuationToken, null, null); blobContinuationToken = results.ContinuationToken; foreach (var result in results.Results) { var blob = new CloudBlob(result.Uri, _account.Credentials); await blob.FetchAttributesAsync(); var deleted = false; var deletedString = ""; var success = blob.Metadata.TryGetValue(FilePathBase.METADATA_DELETED, out deletedString); if (success) { deleted = Boolean.TrueString == deletedString; } if (!includeDeleted && deleted) { continue; } var fileName = "unknown"; blob.Metadata.TryGetValue(FilePathBase.METADATA_FILENAME, out fileName); var file = new CloudFileInfo() { Name = fileName, StorageName = blob.Name, Size = blob.Properties.Length, ContentType = blob.Properties.ContentType, Created = blob.Properties.Created, LastModified = blob.Properties.LastModified, Url = result.Uri.AbsoluteUri, Deleted = deleted, }; items.Add(file); } }while (blobContinuationToken != null); // Loop while the continuation token is not null. return(items.OrderByDescending(x => x.LastModified)); }