Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hidayet-aydin/azure-storage-manager
File management tool for azure blob storage. You can upload or download your local files with CLI commands.
https://github.com/hidayet-aydin/azure-storage-manager
azure azure-storage file-manager npm-cli npm-package
Last synced: 2 months ago
JSON representation
File management tool for azure blob storage. You can upload or download your local files with CLI commands.
- Host: GitHub
- URL: https://github.com/hidayet-aydin/azure-storage-manager
- Owner: hidayet-aydin
- License: mit
- Created: 2022-10-16T19:20:17.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-10T19:32:36.000Z (almost 2 years ago)
- Last Synced: 2024-11-20T04:12:56.666Z (2 months ago)
- Topics: azure, azure-storage, file-manager, npm-cli, npm-package
- Language: JavaScript
- Homepage:
- Size: 18.6 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# 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**
```bash
export AzureWebJobsStorage="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
```**Command Prompt**
```bash
set AzureWebJobsStorage="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
```**PowerShell**
```bash
$Env:AzureWebJobsStorage="DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
```## 3. CLI USAGE
**Basic Commands**
| Command | Description | Parameters |
| :------- | :-------------------------------------------------------- | :--------------- |
| list | listing | _-c_ |
| create | Creating a container | _-c_ |
| remove | Removing a container | _-c_ |
| upload | Uploading from your directory to Blob-Storage container | _-c, -f_ |
| download | Downloading from Blob-Storage container to your directory | _-c, -f_ |
| delete | Deleting Blob-Storage relative container path content | _-c_ |
| sas | Shared Signature Access (SAS) key generation | _-c, -b, -p, -e_ |**Parameters**
| Short Parameter | Parameter | Description |
| :-------------- | :----------- | :------------------------------- |
| -c | --container | selected container name |
| -f | --folder | source/target folder path |
| -t | --type | container type [public, private] |
| -b | --blob | blob name |
| -p | --permission | permission parameters [racwd] |
| -e | --expiry | Expiry for integer-hour |**CLI Examples**
```bash
$ azsm list # listing all container name
$ azsm list -c # listing selected container
$ azsm create -c [-t private] # creating a new container
$ azsm download -c -f # downloading container content
$ azsm sas -c test -b "icons/picture-logo.png" -p "r" -e "12" # generating SAS Key
```**CommonJS Uploading Examples**
```js
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.pngawait azsm.listContainer();
// icons/logo.png
// notes.txt
// picture.pngconst 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'
// }
})();
``````js
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 uploadedconst app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));app.get("/uploads", (req, res) => {
res.send(
'' +
'' +
'' +
""
);
});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.