I\'m already successfully listing available files, but I needed to know how I could pass that file down to the browser for a user to download without necessarily saving it t
I have done a sample where you can upload and download blob file.
using System;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
using System.Collections.Generic;
namespace GetBackup
{
class Program
{
static async Task Main(string[] args)
{
string Config_string = "";
using (StreamReader SourceReader = File.OpenText(@"appsettings.json"))
{
Config_string = await SourceReader.ReadToEndAsync();
}
var config = (JObject)JsonConvert.DeserializeObject(Config_string);
if(config["Application_type"].ToString()== "Backup")
{
string Dir_path = config["Backup_Path"].ToString();
string[] allfiles = Directory.GetFiles(Dir_path, "*.*", SearchOption.AllDirectories);
string storageConnectionString = config["AZURE_STORAGE_CONNECTION_STRING"].ToString();
CloudStorageAccount storageAccount;
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("rtddata");
//await cloudBlobContainer.CreateAsync();
string[] ExcludeFiles = config["Exception_File"].ToString().Split(',');
foreach (var file in allfiles)
{
FileInfo info = new FileInfo(file);
if (!ExcludeFiles.Contains(info.Name))
{
string folder = (Dir_path.Length < info.DirectoryName.Length) ? info.DirectoryName.Replace(Dir_path, "") : "";
folder = (folder.Length > 0) ? folder + "/" : "";
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(folder + info.Name);
await cloudBlockBlob.UploadFromFileAsync(info.FullName);
}
}
}
}
else if (config["Application_type"].ToString() == "Restore")
{
string storageConnectionString = config["AZURE_STORAGE_CONNECTION_STRING"].ToString();
CloudStorageAccount storageAccount;
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("rtddata");
string Dir_path = config["Restore_Path"].ToString();
IEnumerable results = cloudBlobContainer.ListBlobs(null,true);
foreach (IListBlobItem item in results)
{
string name = ((CloudBlockBlob)item).Name;
if (name.Contains('/'))
{
string[] subfolder = name.Split('/');
if (!Directory.Exists(Dir_path + subfolder[0]))
{
Directory.CreateDirectory(Dir_path + subfolder[0]);
}
}
CloudBlockBlob blockBlob = cloudBlobContainer.GetBlockBlobReference(name);
string path = (Dir_path + name);
blockBlob.DownloadToFile(path, FileMode.Create);
}
}
}
}
}
}