Azure  

How to Use Azure Blob Storage to Upload and Download Files in .NET

Introduction

Azure Blob Storage is a scalable cloud storage solution provided by Microsoft Azure that is widely used for storing large amounts of unstructured data such as images, videos, documents, and backups. In modern .NET applications, Azure Blob Storage is commonly used to handle file uploads and downloads efficiently and securely.

This article explains how to use Azure Blob Storage in .NET to upload and download files with step-by-step examples, best practices, and real-world use cases.

What is Azure Blob Storage?

Azure Blob Storage is a service designed for storing binary large objects (blobs). It allows applications to store and retrieve files from the cloud using REST APIs or SDKs.

Key Features

  • Highly scalable and durable storage

  • Secure access using access keys and SAS tokens

  • Supports large file uploads

  • Integration with .NET applications using Azure SDK

Prerequisites

Before starting, make sure you have:

  • An active Azure account

  • A Storage Account created in Azure

  • A Blob Container inside the storage account

  • .NET SDK installed

Step 1: Install Azure Blob Storage NuGet Package

Install the required package using the following command:

dotnet add package Azure.Storage.Blobs

Step 2: Configure Connection String

Get the connection string from your Azure Storage Account and store it securely (e.g., appsettings.json).

{
  "AzureStorage": {
    "ConnectionString": "your_connection_string_here",
    "ContainerName": "mycontainer"
  }
}

Step 3: Upload File to Azure Blob Storage

Example Code

using Azure.Storage.Blobs;

public class BlobService
{
    private readonly string _connectionString = "your_connection_string";
    private readonly string _containerName = "mycontainer";

    public async Task UploadFileAsync(string filePath)
    {
        var blobServiceClient = new BlobServiceClient(_connectionString);
        var containerClient = blobServiceClient.GetBlobContainerClient(_containerName);
        var blobClient = containerClient.GetBlobClient(Path.GetFileName(filePath));

        using (FileStream uploadFileStream = File.OpenRead(filePath))
        {
            await blobClient.UploadAsync(uploadFileStream, true);
        }
    }
}

This code uploads a file from the local system to Azure Blob Storage.

Step 4: Download File from Azure Blob Storage

Example Code

public async Task DownloadFileAsync(string blobName, string downloadPath)
{
    var blobServiceClient = new BlobServiceClient(_connectionString);
    var containerClient = blobServiceClient.GetBlobContainerClient(_containerName);
    var blobClient = containerClient.GetBlobClient(blobName);

    await blobClient.DownloadToAsync(downloadPath);
}

This method downloads a file from Azure Blob Storage to a local path.

Step 5: Create Container (Optional)

public async Task CreateContainerAsync()
{
    var blobServiceClient = new BlobServiceClient(_connectionString);
    var containerClient = blobServiceClient.GetBlobContainerClient(_containerName);

    await containerClient.CreateIfNotExistsAsync();
}

Real-World Use Case

In a web application, users can upload profile images or documents. Instead of storing files on the server, the application uploads them to Azure Blob Storage and stores only the file URL in the database. This improves scalability, security, and performance.

Best Practices

  • Store connection strings securely using Azure Key Vault or environment variables

  • Use SAS tokens for secure, limited access

  • Organize blobs using virtual folders

  • Enable logging and monitoring

Common Errors and Fixes

  • Authentication failed: Check connection string

  • Container not found: Ensure container exists

  • File upload fails: Check file path and permissions

Summary

Azure Blob Storage provides a reliable and scalable way to store and manage files in .NET applications. By using the Azure.Storage.Blobs SDK, developers can easily upload and download files with minimal code while ensuring security and performance. Integrating Azure Blob Storage into your application helps build cloud-ready systems that can handle large volumes of data efficiently.