Uploading and Downloading Blobs

This document provides a comprehensive guide to uploading and downloading data to and from Azure Blob Storage using various methods and client libraries.

Overview

Azure Blob Storage is Microsoft's cloud object storage solution, optimized for storing massive amounts of unstructured data like text or binary data. Blobs can be accessed from anywhere in the world via HTTP or HTTPS. Blobs can be used to serve images or documents directly to a browser, store files for distributed access, stream video and audio, write to log files, store data for backup and restore, disaster recovery, and data archiving.

Methods for Uploading and Downloading

You can interact with Azure Blob Storage using several tools and SDKs. The most common methods are:

Uploading Blobs

1. Using the Azure Portal

The Azure Portal offers a user-friendly way to upload individual files or folders.

  1. Navigate to your storage account in the Azure Portal.
  2. Select the container where you want to upload the blob.
  3. Click the Upload button.
  4. Choose files or a folder from your local machine.

2. Using Azure CLI

The Azure CLI provides efficient commands for uploading files. Replace <account-name>, <container-name>, and <local-path> with your specific values.


az storage blob upload \
    --account-name <account-name> \
    --container-name <container-name> \
    --name <blob-name> \
    --file <local-path>
                

az storage blob upload-append \
    --account-name <account-name> \
    --container-name <container-name> \
    --name <blob-name> \
    --file <local-path> \
    --offset <current-blob-size> \
    --block-size <block-size>
                

az storage blob upload \
    --account-name <account-name> \
    --container-name <container-name> \
    --name <blob-name> \
    --file <local-path> \
    --type Page
                

3. Using Azure SDKs (Python Example)

The Azure SDKs provide a programmatic way to upload blobs. Here's a Python example:


from azure.storage.blob import BlobServiceClient

connection_string = "YOUR_AZURE_STORAGE_CONNECTION_STRING"
container_name = "mycontainer"
local_file_name = "my_local_file.txt"
blob_name = "my_remote_blob_name.txt"

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

# Get a client to interact with a specific blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)

print(f"Uploading {local_file_name} to {blob_name}...")

with open(local_file_name, "rb") as data:
    blob_client.upload_blob(data)

print("Upload complete.")
            

Downloading Blobs

1. Using the Azure Portal

Similar to uploading, the portal allows easy download of blobs.

  1. Navigate to your storage account and then to the container.
  2. Select the blob you wish to download.
  3. Click the Download button.

2. Using Azure CLI

The Azure CLI simplifies downloading blobs to your local machine.


az storage blob download \
    --account-name <account-name> \
    --container-name <container-name> \
    --name <blob-name> \
    --file <local-path-to-save>
            

3. Using Azure SDKs (Python Example)

Programmatically download blobs using the Azure SDKs. Here's a Python example:


from azure.storage.blob import BlobServiceClient

connection_string = "YOUR_AZURE_STORAGE_CONNECTION_STRING"
container_name = "mycontainer"
blob_name = "my_remote_blob_name.txt"
local_file_name = "my_downloaded_file.txt"

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient.from_connection_string(connection_string)

# Get a client to interact with a specific blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)

print(f"Downloading {blob_name} to {local_file_name}...")

with open(local_file_name, "wb") as download_file:
    download_stream = blob_client.download_blob()
    download_file.write(download_stream.readall())

print("Download complete.")
            

Best Practices

Important: Always replace placeholder values like YOUR_AZURE_STORAGE_CONNECTION_STRING, <account-name>, <container-name>, <blob-name>, and <local-path> with your actual Azure Storage details.

For more advanced scenarios, such as managing blob properties, setting access tiers, or working with snapshots, please refer to the official Azure Blob Storage documentation.