Unzip memory stream and load into Azure blob container

Introduction

This article is used for getting memory stream of zip file, uncompress memory stream and load stream into Azure blob.
I am using Ionic.Zip namespace to uncompress the memory stream.I am reading storage credential from app.config

appconfig

I am using CloudStorageAccount class to configure storage account settings, CloudBlobClient class to reference of
Azure blob and CloudBlobContainer class to reference of Azure blob container.

C# Code to Get file stream of a Azure file share file

         
         public Stream GetFileStream(string connectionstring,string fileshare,string filename)
        {
            // Parse the connection string and return a reference to the storage account.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
            // Create a CloudFileClient object for credential access to File storage.
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
            // Get a reference to the file share.
            CloudFileShare share = fileClient.GetShareReference(fileshare);
            if (share.Exists())
            {
                // Get a reference to the root directory for the share.
                CloudFileDirectory rootDir = share.GetRootDirectoryReference();
                foreach (CloudFile file in rootDir.ListFilesAndDirectories())
                {
                    if (file.Name==filename)
                    {
                        Stream mem = new MemoryStream();
                        file.DownloadToStream(mem);
                        return mem;
                    }
                }
            }
            return null;
        }
    

Unzipping memory stream of a zip file

 
      public byte[] UnzipFileInMemory(Stream Zipmem)
        {
            byte[] buffer = new byte[16 * 1024];
            Zipmem.Position = 0;
            using (MemoryStream ms = new MemoryStream())
            {
                int read;
                while ((read = Zipmem.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                }

                using (var outputStream = new MemoryStream())
                using (var inputStream = new MemoryStream(ms.ToArray()))
                {
                    using (var zipInputStream = new ZipInputStream(inputStream))
                    {
                        zipInputStream.GetNextEntry();
                        zipInputStream.CopyTo(outputStream);
                    }
                    return outputStream.ToArray();
                }               
            }
        } 
   

Load memory stream to Azure blob container

 
      public bool UploadByteArrayToBlob(byte[] memdata,string connectionstring ,string blobcontainer,string blobname)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
            CloudBlobClient blobClient = csa_storageAccount.CreateCloudBlobClient();
            CloudBlobContainer blobContainer = blobClient.GetContainerReference(blobcontainer);
            blobContainer.CreateIfNotExists();
            blobContainer.SetPermissions(new BlobContainerPermissions
            {
                PublicAccess = BlobContainerPublicAccessType.Blob
            });
            CloudBlockBlob blob = blobContainer.GetBlockBlobReference(blobname);
            blob.UploadFromByteArray(memdata, 0, memdata.Length);
            return true;
        } 
 

Required Namespace to Create Blob Container

 
      using Microsoft.Azure; // Namespace for Azure Configuration Manager
     using Microsoft.WindowsAzure.Storage; // Namespace for Storage Client Library
       using Microsoft.WindowsAzure.Storage.Blob; // Namespace for Blob storage
        using Microsoft.WindowsAzure.Storage.File; // Namespace for File storage
        using Microsoft.WindowsAzure.Storage.Auth;
  

Calling of method

 
      string strconnection = CloudConfigurationManager.GetSetting("StorageConnectionString");
        Console.WriteLine("Blob container ready to create ");
        Console.WriteLine(CreateBlobContainer(strconnection, "myblobcontainer"));
   

Points of Interest

This article explain each step to unzip memory stream and load memory stream to Azure blob container

History

No updates available