Skip to content

Instantly share code, notes, and snippets.

@melkio
Created November 3, 2012 20:49
Show Gist options
  • Save melkio/4008695 to your computer and use it in GitHub Desktop.
Save melkio/4008695 to your computer and use it in GitHub Desktop.
Upload directory to blob storage
public void UploadDirectoryToBlobStorage(String directory, CloudBlobDirectory virtualDirectory = null)
{
var directoryInfo = new DirectoryInfo(directory);
var blobReferenceBuilder = (virtualDirectory == null) ?
(Func<String, CloudBlockBlob>) (n => _container.GetBlockBlobReference(n)) :
(Func<String, CloudBlockBlob>) (n => virtualDirectory.GetBlockBlobReference(n));
var files = directoryInfo.GetFiles();
Array.ForEach(files, f =>
{
var name = Path.GetFileName(f.FullName);
var extension = Path.GetExtension(f.FullName).Substring(1).ToLower();
var blob = blobReferenceBuilder(name);
if (ContentTypeMapping.ContainsKey(extension))
blob.Properties.ContentType = ContentTypeMapping[extension];
using (var stream = new MemoryStream(File.ReadAllBytes(f.FullName)))
{
stream.Seek(0, SeekOrigin.Begin);
blob.UploadFromStream(stream);
stream.Close();
}
});
var directoryReferenceBuilder = (virtualDirectory == null) ?
(Func<String, CloudBlobDirectory>) (n => _container.GetDirectoryReference(n)) :
(Func<String, CloudBlobDirectory>)(n => virtualDirectory.GetSubdirectoryReference(n));
var directories = directoryInfo.GetDirectories();
Array.ForEach(directories, d =>
{
var subDirectory= directoryReferenceBuilder(d.Name);
UploadDirectoryToBlobStorage(d.FullName, subDirectory);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment