using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Configuration;
using Microsoft.WindowsAzure;
using System.IO;
using Microsoft.WindowsAzure.ServiceRuntime;
namespace AzureDemo
{
public class AzureBlobManager
{
public string uploadFilesToAzureBlob(FileUpload PostedFile, string FileName, string containerName, Guid userid)
{
string blobURLs = string.Empty;
try
{
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
// Create the container if it doesn't already exist.
container.CreateIfNotExists();
if (PostedFile.PostedFile.ContentLength > 0)
{
System.IO.Stream inputStream = PostedFile.PostedFile.InputStream;
inputStream.Position = 0;
byte[] myBinary = new byte[PostedFile.PostedFile.ContentLength];
//PostedFile.InputStream.Read(myBinary, 0, (int)PostedFile.ContentLength);
using (var binaryReader = new System.IO.BinaryReader(inputStream))
{
myBinary = binaryReader.ReadBytes(PostedFile.PostedFile.ContentLength);
}
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference(string.Concat(userid, "_", PostedFile.FileName));
// Create or overwrite the "myblob" blob with contents from a local file.
//blockBlob.UploadFromStream(PostedFile.PostedFile.InputStream);
blockBlob.UploadFromStream(new System.IO.MemoryStream(myBinary));
// blockBlob.UploadFromStream(PostedFile.PostedFile.InputStream);
blobURLs = blockBlob.Uri.ToString();
}
}
catch (Exception ex)
{
//HandleException.HandleExceptionLog(ex);
}
return blobURLs;
}
//Directly reads from blob and sends it to user
public void DownloadFileFromBlob(string fileName,string containerName)
{
CloudStorageAccount account = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
MemoryStream memStream = new MemoryStream();
blob.DownloadToStream(memStream);
HttpContext.Current.Response.ContentType = blob.Properties.ContentType;
HttpContext.Current.Response.AddHeader("Content-Disposition", "Attachment; filename=" + fileName.ToString());
HttpContext.Current.Response.AddHeader("Content-Length", blob.Properties.Length.ToString());
HttpContext.Current.Response.BinaryWrite(memStream.ToArray());
}
}
}
Happy Coding!!
No comments:
Post a Comment