DEV Community

Cover image for Azure Blob Storage with JavaScript
Nelson Hernández
Nelson Hernández

Posted on

4 1

Azure Blob Storage with JavaScript

In this publication we will see the main methods to use with Azure Blob Storage this example was intended using Express JS



npm i @azure/storage-blob dotenv


Enter fullscreen mode Exit fullscreen mode

Blob Service Client



import { BlobServiceClient } from "@azure/storage-blob";
import { config } from "dotenv";

config();

const blobService = BlobServiceClient.fromConnectionString(
  process.env.AZURE_STORAGE_CONNECTION_STRING
);


Enter fullscreen mode Exit fullscreen mode

Connection String

Connection String Azure Blob Storage

Methods for blobs (Files)

Upload Blob



export const uploadBlob = async (req, res) => {
  try {
    const { container } = req.body;
    const { originalname, buffer } = req.file;

    const containerClient = blobService.getContainerClient(container);

    await containerClient.getBlockBlobClient(originalname).uploadData(buffer);

    res.json({ message: "success" });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

Get Blob



export const getBlob = async (req, res) => {
  try {
    const { container, filename } = req.params;

    const containerClient = blobService.getContainerClient(container);

    res.header("Content-Type", "image/jpg");

    const response = await containerClient
      .getBlockBlobClient(filename)
      .downloadToBuffer();

    res.send(response);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

Download Blob



export const downloadBlob = async (req, res) => {
  try {
    const { container, filename } = req.params;

    const containerClient = blobService.getContainerClient(container);

    const response = await containerClient
      .getBlockBlobClient(filename)
      .downloadToBuffer();

    res.send(response);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

Delete Blob



export const deleteBlob = async (req, res) => {
  try {
    const { container, filename } = req.body;

    const containerClient = blobService.getContainerClient(container);

    const response = await containerClient
      .getBlockBlobClient(filename)
      .deleteIfExists();

    res.send(response);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

Methods for Containers (Folders)

Create Container



export const createContainer = (req, res) => {
  try {
    const { container } = req.body;

    blobService.createContainer(container);

    res.json({ message: "success" });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

Delete Container



export const deleteContainer = (req, res) => {
  try {
    const { container } = req.body;

    blobService.deleteContainer(container);

    res.json({ message: "success" });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

List Containers



export const listContainer = async (req, res) => {
  try {
    let containers = [];
    for await (const container of blobService.listContainers()) {
      containers.push(container.name);
    }

    res.json({ containers });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};


Enter fullscreen mode Exit fullscreen mode

Example in GitHub Gist
https://gist.github.com/nelsoncode019/5efaa894e26f0e7c8566ae3891dbb9a8

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay