Azure Storage Blob Upload

Uploading objects to Azure Blob Storage using SDKs and REST API

Upload Objects to Azure Blob Storage

This document guides you through the process of uploading objects (blobs) to Azure Blob Storage. We'll cover common methods using SDKs and the REST API.

Prerequisites

Methods for Uploading Blobs

Azure Blob Storage offers several ways to upload data:

1. Using Azure SDKs

The Azure SDKs provide high-level abstractions for interacting with Azure services, making development easier. We'll show examples for .NET and Python.

1.1 .NET SDK Example

The Azure.Storage.Blobs package simplifies blob operations.

Step 1: Install the NuGet Package

Add the following package to your .NET project:

dotnet add package Azure.Storage.Blobs

Step 2: Upload a Blob

Use the BlobClient to upload a file:


using Azure.Storage.Blobs;
using System;
using System.IO;
using System.Threading.Tasks;

public class BlobUploader
{
    public static async Task UploadFileAsync(string connectionString, string containerName, string blobName, string filePath)
    {
        // Create a BlobServiceClient object which will be used to create a container client
        BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

        // Get a reference to a container client
        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);

        // Get a reference to a blob client
        BlobClient blobClient = containerClient.GetBlobClient(blobName);

        using (FileStream uploadFileStream = File.OpenRead(filePath))
        {
            await blobClient.UploadAsync(uploadFileStream, true); // true to overwrite if the blob already exists
            Console.WriteLine($"Uploaded blob '{blobName}' to container '{containerName}'.");
        }
    }

    // Example usage:
    // public static async Task Main(string[] args)
    // {
    //     string connectionString = "YOUR_AZURE_STORAGE_CONNECTION_STRING";
    //     string containerName = "mycontainer";
    //     string blobName = "myblob.txt";
    //     string filePath = "localfile.txt";
    //     await UploadFileAsync(connectionString, containerName, blobName, filePath);
    // }
}
                

1.2 Python SDK Example

Use the azure-storage-blob library.

Step 1: Install the Library

Install the package using pip:

pip install azure-storage-blob

Step 2: Upload a Blob

Use the BlobClient:


from azure.storage.blob import BlobServiceClient
import os

def upload_blob(connection_string, container_name, blob_name, file_path):
    # Create the BlobServiceClient object
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)

    # Get a client to the container
    container_client = blob_service_client.get_container_client(container_name)

    # Upload the blob
    with open(file_path, "rb") as data:
        container_client.upload_blob(name=blob_name, data=data, overwrite=True)
    print(f"Uploaded blob '{blob_name}' to container '{container_name}'.")

# Example usage:
# conn_str = "YOUR_AZURE_STORAGE_CONNECTION_STRING"
# container = "mycontainer"
# blob = "my_python_blob.txt"
# local_file = "local_file_to_upload.txt"
# upload_blob(conn_str, container, blob, local_file)
                

2. Using the Azure Blob Storage REST API

For more direct control or when SDKs are not available, you can use the REST API.

Upload REST API Call

You'll use a PUT request to the blob's URL. Ensure you include the appropriate authorization headers.

Request URL:


PUT https://myaccount.blob.core.windows.net/mycontainer/myblob.txt HTTP/1.1
Content-Length: [size of the file]
x-ms-blob-type: BlockBlob
Authorization: [SharedKey or other auth]
Date: [current date and time]
        

Request Body: The content of the file you want to upload.

For detailed information on authentication and request headers, please refer to the official Azure Blob Storage REST API documentation.

Key Considerations for Uploading

Performance Tip:

For uploading large files, especially over slower networks, use the parallel upload feature. The Azure SDKs often handle this automatically or provide options to configure it.

Important Note:

Always replace placeholder values like connection strings, container names, and blob names with your actual Azure Storage credentials and desired names.

Continue exploring the Azure Blob Storage documentation to learn about other operations like downloading, deleting, and managing blobs.