Skip to content

Instantly share code, notes, and snippets.

@Shaxadhere
Last active June 7, 2022 06:44
Show Gist options
  • Save Shaxadhere/910303511d95b9e9eb55e91d9ee62fe4 to your computer and use it in GitHub Desktop.
Save Shaxadhere/910303511d95b9e9eb55e91d9ee62fe4 to your computer and use it in GitHub Desktop.
upload file to azure blob storage via multer and multer-azure-blob-storage
const path = require("path");
const multer = require("multer");
const MulterAzureStorage = require('multer-azure-blob-storage').MulterAzureStorage;
const { ApiResponse, generateString } = require("../helpers");
require("dotenv").config()
//upload to azure blob storage
const resolveBlobName = (req, file) => {
return new Promise((resolve, reject) => {
const blobName = generateString(20) + path.extname(file.originalname);
req.body.image = blobName;
resolve(blobName);
});
};
const resolveMetadata = (req, file) => {
return new Promise((resolve, reject) => {
const metadata = { author: "John Doe", album: "ASOT" };
resolve(metadata);
});
};
const resolveContentSettings = (req, file) => {
return new Promise((resolve, reject) => {
// const contentSettings = yourCustomLogic(req, file);
const contentSettings = "";
resolve(contentSettings);
});
};
const azureStorage = new MulterAzureStorage({
connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
accessKey: process.env.AZURE_STORAGE_ACCESS_KEY,
accountName: process.env.AZURE_STORAGE_ACCOUNT_NAME,
containerName: process.env.AZURE_BLOB_CONTAINER_NAME,
blobName: resolveBlobName,
metadata: resolveMetadata,
contentSettings: resolveContentSettings,
// containerAccessLevel: 'blob',
});
exports.uploadToAzureBlob = multer({
storage: azureStorage
}).single("image")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment