Table of Contents
In this section, we will create our first program using Azure blobs. This article creates a simple web page where we upload image files which are stored in Azure blobs. We have also created a simple search text box which will help us to search the image blobs with the image file name.
If you are really lazy like me, you can download my learn Azure Step by Step video which explain thoroughly all about Azure in step by step manner.
Also watch my latest 2 Hours Tutorial on Azure DevOps:-
My Other Azure FAQ Articles
In case you are a complete fresher to Azure, please ensure you have all the pre-requisites in place. You can read this article to get the basic prerequisites.
Azure Blobs help to store large items like files, in other words its file storage system. In this article, we will create a simple program to upload image files in Azure blob system.
The first step is to a create a web role project. In case you are fresher in Azure, you can go through this article to understand how to create a web role project. So let’s create a simple project with name ‘BlobStorage
’. Once you have created the project, it creates two projects one is the cloud service project and the other is the web role project. Cloud service project has all the necessary configuration needed for your cloud service project while the web role project is your ASP.NET project.
Now the next step is to define a blob connection string in the service configuration file. So expand the ‘BlobStorage
’ project, right click on roles and select properties.
Once you select properties, go to settings tab and add the blob connection string as shown in the below figure. In the below figure, we have added blob connection string name as BlobConnectionString
.
Click on the right hand ellipse and select ‘Use development storage’. All the changes done using the setting UI will be reflected in the ‘ServiceConfiguration
’ file as shown above.
Now it’s time to start coding. Open the web role project and open ‘WebRole.cs’ file.
Now let’s write code in the ‘onstart
’ event to create the blob container.
public override bool OnStart()
{
}
Use the CloudStorageAccount static
class to set the configuration environment.
public override bool OnStart()
{
DiagnosticMonitor.Start("DiagnosticsConnectionString");
CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
});
....
....
....
....
}
The next step is to get a reference of the cloudstorageaccount
object using the blob connection string which was provided when you setup your web role project.
CloudStorageAccount objStorage =
CloudStorageAccount.FromConfigurationSetting("BlobConnectionString");
Once we have access to the storage account object, use the blob end point to create the blob client.
CloudBlobClient objClient = new CloudBlobClient
(objStorage.BlobEndpoint, objStorage.Credentials);
Give a nice name to the container and create the container object using the client object which you have just created using the blob end point. Call the ‘CreateIfnotExist
’ method of the container to ensure that you create the blob container only if it does not exist to avoid any errors.
CloudBlobContainer objContainer = objClient.GetContainerReference("mycontainer");
objContainer.CreateIfNotExist();
The final step is to create the ASPX page which will help us upload image files in the blob container which we just created in the WebRole.cs file. You can see in the below figure that we have created a browse button which will help us upload image files and a search text box which will help us search blob files.
So create the below defined ASPX UI.
In the above ASPX CS UI, first get the reference to the below specified name spaces.
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
In the file upload button, we need to insert the below code snippet to upload the file. So get access to the container object ‘MyContainer
’ and call the ‘GetBlobReference
’ function to get access to the cloud blob object.
CloudStorageAccount objStorage =
CloudStorageAccount.FromConfigurationSetting("BlobConnectionString");
CloudBlobClient objClient =
new CloudBlobClient(objStorage.BlobEndpoint, objStorage.Credentials);
CloudBlobContainer objContainer = objClient.GetContainerReference("mycontainer");
CloudBlob obj =objContainer.GetBlobReference(FileUpload1.FileName.ToString());
Set the meta data of the cloud object and open a blob stream object to write the file. Do not forget to close the blob steam object once you are done.
obj.Metadata["MetaName"] = "meta";
BlobStream blobstream = obj.OpenWrite();
blobstream.Write(FileUpload1.FileBytes, 0, FileUpload1.FileBytes.Count());
blobstream.Close();
Once we upload the file, we will browse through the blob list to get the list of blobs present in the container.
IEnumerable<IListBlobItem> objBlobList = objContainer.ListBlobs();
foreach (IListBlobItem objItem in objBlobList)
{
Response.Write(objItem.Uri + "<br>");
}
In the same UI, we have provided a search object to search a blob. To search a blob first get access to the container object and call the GetBlobReference
function with the blob name to get a reference to the cloud object.
CloudBlob obj = objContainer.GetBlobReference(txtSearch.Text);
BlobStream blobstream = obj.OpenRead();
Read the blob stream using the blob steam object and finally attach this stream with the Image
object to display the same in the HTTP response.
System.Drawing.Image objimg=null;
objimg = System.Drawing.Image.FromStream(blobstream,true);
Response.Clear();
Response.ContentType = "image/gif";
objimg.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
Finally enjoy your first blob program. You can see in the below figure that we have uploaded some image files in the blob.
We can also search the blob using the search blob text box and you should be able to get the below image display from the blob database.
For further reading do watch the below interview preparation videos and step by step video series.