0.3.1 • Published 1 year ago

azure-storage-manager v0.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Azure Storage Manager

File management tool for azure blob storage. You can upload or download your local files with CLI commands.

1. INSTALLATION

Install the library with npm i --save azure-storage-manager

2. ENVIRONMENT

Copy your key from your "azure blob storage" account. This key must be added with an environment named "AzureWebJobsStorage".

Linux or macOS

export AzureWebJobsStorage="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"

Command Prompt

set AzureWebJobsStorage="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"

PowerShell

$Env:AzureWebJobsStorage="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"

3. CLI USAGE

Basic Commands

CommandDescriptionParameters
listlisting-c
createCreating a container-c
removeRemoving a container-c
uploadUploading from your directory to Blob-Storage container-c, -f
downloadDownloading from Blob-Storage container to your directory-c, -f
deleteDeleting Blob-Storage relative container path content-c
sasShared Signature Access (SAS) key generation-c, -b, -p, -e

Parameters

Short ParameterParameterDescription
-c--containerselected container name
-f--foldersource/target folder path
-t--typecontainer type public, private
-b--blobblob name
-p--permissionpermission parameters racwd
-e--expiryExpiry for integer-hour

CLI Examples

$ azsm list                                                        # listing all container name
$ azsm list -c <CONTAINER-NAME>                                    # listing selected container
$ azsm create -c <CONTAINER-NAME> [-t private]                     # creating a new container
$ azsm download -c <CONTAINER-NAME> -f <FOLDER-PATH>               # downloading container content
$ azsm sas -c test -b "icons/picture-logo.png" -p "r" -e "12"      # generating SAS Key

CommonJS Uploading Examples

const AzureStorageManager = require("azure-storage-manager");

(async function () {
  const connectionString = process.env["AzureWebJobsStorage"];
  const azsm = new AzureStorageManager(connectionString);

  await azsm.listContainer();
  //   special, (private)
  //   public, (blob)

  azsm.setContainer("test"); //----> container name
  azsm.setFolderPath("source"); //-> source folder
  await azsm.upload();
  // Uploading: icons/logo.png
  // Uploaded: icons/logo.png
  // Uploading: notes.txt
  // Uploaded: notes.txt
  // Uploading: picture.png
  // Uploaded: picture.png

  await azsm.listContainer();
  // icons/logo.png
  // notes.txt
  // picture.png

  const sasResult = await azsm.generateBlobSAS("icons/logo.png", "r", "6");
  console.log(sasResult);
  //   {
  //     sasKey: 'sv=2016-05-31&spr=https%2Chttp&st=2022-11-23T05%3A47%3A48Z&se=2022-11-23T17%3A47%3A48Z&sr=b&sp=r&sig=xxx',
  //     url: 'https://xxx.blob.core.windows.net/special/icons/logo.png?sv=2016-05-31&spr=https%2Chttp&st=2022-11-23T05%3A47%3A48Z&se=2022-11-23T17%3A47%3A48Z&sr=b&sp=r&sig=xxx'
  //   }
})();
const multer = require("multer");
const express = require("express");
const getStream = require("into-stream");

const AzureStorageManager = require("azure-storage-manager");

const inMemoryStorage = multer.memoryStorage();
const uploadStrategy = multer({
  storage: inMemoryStorage,
  limits: { fileSize: 1 * 1024 * 1024 },
}).array("files", 3); // Up to 3 files can be uploaded

const app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.get("/uploads", (req, res) => {
  res.send(
    '<form action="/uploads" method="post" enctype="multipart/form-data">' +
      '<input type="file" multiple name="files" id="file" />' +
      '<input type="submit" value="Upload" />' +
      "</form>"
  );
});

app.post("/uploads", uploadStrategy, async (req, res) => {
  try {
    const connectionString = process.env["AzureWebJobsStorage"];

    const azsm = new AzureStorageManager(connectionString);
    azsm.setContainer("test");

    for await (let file of req.files) {
      const stream = getStream(file.buffer);
      const fileName = file.originalname;

      await azsm.uploadStream(stream, fileName);
    }

    return res.json({
      message: "Files uploaded to Azure Blob storage.",
    });
  } catch (err) {
    return res.status(500).json({ error: { message: err.message } });
  }
});

app.listen(3000, () => console.log(`Example app listening on port ${3000}!`));

LICENSE

MIT Licensed.

Copyright © Hidayet AYDIN 2022.