DEV Community

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

Posted on

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

Discussion (0)