Skip to main content Skills Marketplace Descubra e explore skills de IA criadas pela comunidade.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Copiar promptMostrar detalhes do prompt Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
npx skills add https://github.com/BEKO2210/Firstbrain --skill azure-storage-file-share-tsO comando permanece em uma só linha. Role horizontalmente para revisá-lo antes de copiar.
Prefere uma cópia local? Baixe os arquivos disponíveis atualmente no SkillsMP.
Baixar Zip Baixando... Ocupações relacionadas SOC
Baseado na classificação ocupacional SOC
name azure-storage-file-share-ts description Azure File Share JavaScript/TypeScript SDK (@azure/storage-file-share) for SMB file share operations. type skill created 2026-02-27T00:00:00.000Z domain cloud-infrastructure category azure risk unknown source community tags ["skill","cloud-infrastructure","azure","storage","file"]
@azure/storage-file-share (TypeScript/JavaScript)
SDK for Azure File Share operations — SMB file shares, directories, and file operations.
Installation
npm install @azure/storage-file-share @azure/identity
Current Version : 12.x
Node.js : >= 18.0.0
Environment Variables
AZURE_STORAGE_ACCOUNT_NAME=<account-name>
AZURE_STORAGE_ACCOUNT_KEY=<account-key>
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
Authentication
Connection String (Simplest)
import { ShareServiceClient } from "@azure/storage-file-share" ;
const client = ShareServiceClient .fromConnectionString (
process.env .AZURE_STORAGE_CONNECTION_STRING !
);
StorageSharedKeyCredential (Node.js only)
import { ShareServiceClient , StorageSharedKeyCredential } from "@azure/storage-file-share" ;
const accountName = process.env .AZURE_STORAGE_ACCOUNT_NAME !;
const accountKey = process.env .AZURE_STORAGE_ACCOUNT_KEY !;
const sharedKeyCredential = new StorageSharedKeyCredential (accountName, accountKey);
const client = new ShareServiceClient (
`https://${accountName} .file.core.windows.net` ,
sharedKeyCredential
);
DefaultAzureCredential
import { } ;
{ } ;
accountName = process. . !;
client = (
,
()
);
ShareServiceClient
from
"@azure/storage-file-share"
import
DefaultAzureCredential
from
"@azure/identity"
const
env
AZURE_STORAGE_ACCOUNT_NAME
const
new
ShareServiceClient
`https://${accountName} .file.core.windows.net`
new
DefaultAzureCredential
SAS Token import { ShareServiceClient } from "@azure/storage-file-share" ;
const accountName = process.env .AZURE_STORAGE_ACCOUNT_NAME !;
const sasToken = process.env .AZURE_STORAGE_SAS_TOKEN !;
const client = new ShareServiceClient (
`https://${accountName} .file.core.windows.net${sasToken} `
);
Client Hierarchy ShareServiceClient (account level)
└── ShareClient (share level)
└── ShareDirectoryClient (directory level)
└── ShareFileClient (file level)
Share Operations
Create Share const shareClient = client.getShareClient ("my-share" );
await shareClient.create ();
await shareClient.create ({ quota : 100 });
List Shares for await (const share of client.listShares ()) {
console .log (share.name , share.properties .quota );
}
for await (const share of client.listShares ({ prefix : "logs-" })) {
console .log (share.name );
}
Delete Share await shareClient.delete ();
await shareClient.deleteIfExists ();
Get Share Properties const properties = await shareClient.getProperties ();
console .log ("Quota:" , properties.quota , "GB" );
console .log ("Last Modified:" , properties.lastModified );
Set Share Quota await shareClient.setQuota (200 );
Directory Operations
Create Directory const directoryClient = shareClient.getDirectoryClient ("my-directory" );
await directoryClient.create ();
const nestedDir = shareClient.getDirectoryClient ("parent/child/grandchild" );
await nestedDir.create ();
List Directories and Files const directoryClient = shareClient.getDirectoryClient ("my-directory" );
for await (const item of directoryClient.listFilesAndDirectories ()) {
if (item.kind === "directory" ) {
console .log (`[DIR] ${item.name} ` );
} else {
console .log (`[FILE] ${item.name} (${item.properties.contentLength} bytes)` );
}
}
Delete Directory await directoryClient.delete ();
await directoryClient.deleteIfExists ();
Check if Directory Exists const exists = await directoryClient.exists ();
if (!exists) {
await directoryClient.create ();
}
File Operations
Upload File (Simple) const fileClient = shareClient
.getDirectoryClient ("my-directory" )
.getFileClient ("my-file.txt" );
const content = "Hello, World!" ;
await fileClient.create (content.length );
await fileClient.uploadRange (content, 0 , content.length );
Upload File (Node.js - from local file) import * as fs from "fs" ;
import * as path from "path" ;
const fileClient = shareClient.rootDirectoryClient .getFileClient ("uploaded.txt" );
const localFilePath = "/path/to/local/file.txt" ;
const fileSize = fs.statSync (localFilePath).size ;
await fileClient.create (fileSize);
await fileClient.uploadFile (localFilePath);
Upload File (Buffer) const buffer = Buffer .from ("Hello, Azure Files!" );
const fileClient = shareClient.rootDirectoryClient .getFileClient ("buffer-file.txt" );
await fileClient.create (buffer.length );
await fileClient.uploadRange (buffer, 0 , buffer.length );
Upload File (Stream) import * as fs from "fs" ;
const fileClient = shareClient.rootDirectoryClient .getFileClient ("streamed.txt" );
const readStream = fs.createReadStream ("/path/to/local/file.txt" );
const fileSize = fs.statSync ("/path/to/local/file.txt" ).size ;
await fileClient.create (fileSize);
await fileClient.uploadStream (readStream, fileSize, 4 * 1024 * 1024 , 4 );
Download File const fileClient = shareClient
.getDirectoryClient ("my-directory" )
.getFileClient ("my-file.txt" );
const downloadResponse = await fileClient.download ();
const chunks : Buffer [] = [];
for await (const chunk of downloadResponse.readableStreamBody !) {
chunks.push (Buffer .from (chunk));
}
const content = Buffer .concat (chunks).toString ("utf-8" );
Download to File (Node.js) const fileClient = shareClient.rootDirectoryClient .getFileClient ("my-file.txt" );
await fileClient.downloadToFile ("/path/to/local/destination.txt" );
Download to Buffer (Node.js) const fileClient = shareClient.rootDirectoryClient .getFileClient ("my-file.txt" );
const buffer = await fileClient.downloadToBuffer ();
console .log (buffer.toString ());
Delete File const fileClient = shareClient.rootDirectoryClient .getFileClient ("my-file.txt" );
await fileClient.delete ();
await fileClient.deleteIfExists ();
Copy File const sourceUrl = "https://account.file.core.windows.net/share/source.txt" ;
const destFileClient = shareClient.rootDirectoryClient .getFileClient ("destination.txt" );
const copyPoller = await destFileClient.startCopyFromURL (sourceUrl);
await copyPoller.pollUntilDone ();
File Properties & Metadata
Get File Properties const fileClient = shareClient.rootDirectoryClient .getFileClient ("my-file.txt" );
const properties = await fileClient.getProperties ();
console .log ("Content-Length:" , properties.contentLength );
console .log ("Content-Type:" , properties.contentType );
console .log ("Last Modified:" , properties.lastModified );
console .log ("ETag:" , properties.etag );
Set Metadata await fileClient.setMetadata ({
author : "John Doe" ,
category : "documents" ,
});
Set HTTP Headers await fileClient.setHttpHeaders ({
fileContentType : "text/plain" ,
fileCacheControl : "max-age=3600" ,
fileContentDisposition : "attachment; filename=download.txt" ,
});
Range Operations
Upload Range const data = Buffer .from ("partial content" );
await fileClient.uploadRange (data, 100 , data.length );
Download Range const downloadResponse = await fileClient.download (100 , 50 );
Clear Range await fileClient.clearRange (0 , 100 );
Snapshot Operations
Create Snapshot const snapshotResponse = await shareClient.createSnapshot ();
console .log ("Snapshot:" , snapshotResponse.snapshot );
Access Snapshot const snapshotShareClient = shareClient.withSnapshot (snapshotResponse.snapshot !);
const snapshotFileClient = snapshotShareClient.rootDirectoryClient .getFileClient ("file.txt" );
const content = await snapshotFileClient.downloadToBuffer ();
Delete Snapshot await shareClient.delete ({ deleteSnapshots : "include" });
SAS Token Generation (Node.js only)
Generate File SAS import {
generateFileSASQueryParameters,
FileSASPermissions ,
StorageSharedKeyCredential ,
} from "@azure/storage-file-share" ;
const sharedKeyCredential = new StorageSharedKeyCredential (accountName, accountKey);
const sasToken = generateFileSASQueryParameters (
{
shareName : "my-share" ,
filePath : "my-directory/my-file.txt" ,
permissions : FileSASPermissions .parse ("r" ),
expiresOn : new Date (Date .now () + 3600 * 1000 ),
},
sharedKeyCredential
).toString ();
const sasUrl = `https://${accountName} .file.core.windows.net/my-share/my-directory/my-file.txt?${sasToken} ` ;
Generate Share SAS import { ShareSASPermissions , generateFileSASQueryParameters } from "@azure/storage-file-share" ;
const sasToken = generateFileSASQueryParameters (
{
shareName : "my-share" ,
permissions : ShareSASPermissions .parse ("rcwdl" ),
expiresOn : new Date (Date .now () + 24 * 3600 * 1000 ),
},
sharedKeyCredential
).toString ();
Error Handling import { RestError } from "@azure/storage-file-share" ;
try {
await shareClient.create ();
} catch (error) {
if (error instanceof RestError ) {
switch (error.statusCode ) {
case 404 :
console .log ("Share not found" );
break ;
case 409 :
console .log ("Share already exists" );
break ;
case 403 :
console .log ("Access denied" );
break ;
default :
console .error (`Storage error ${error.statusCode} : ${error.message} ` );
}
}
throw error;
}
TypeScript Types Reference import {
ShareServiceClient ,
ShareClient ,
ShareDirectoryClient ,
ShareFileClient ,
StorageSharedKeyCredential ,
AnonymousCredential ,
FileSASPermissions ,
ShareSASPermissions ,
AccountSASPermissions ,
AccountSASServices ,
AccountSASResourceTypes ,
generateFileSASQueryParameters,
generateAccountSASQueryParameters,
ShareCreateResponse ,
FileDownloadResponseModel ,
DirectoryItem ,
FileItem ,
ShareProperties ,
FileProperties ,
RestError ,
} from "@azure/storage-file-share" ;
Best Practices
Use connection strings for simplicity — Easiest setup for development
Use DefaultAzureCredential for production — Enable managed identity in Azure
Set quotas on shares — Prevent unexpected storage costs
Use streaming for large files — uploadStream/downloadToFile for files > 256MB
Use ranges for partial updates — More efficient than full file replacement
Create snapshots before major changes — Point-in-time recovery
Handle errors gracefully — Check RestError.statusCode for specific handling
Use *IfExists methods — For idempotent operations
Platform Differences Feature Node.js Browser StorageSharedKeyCredential✅ ❌ uploadFile()✅ ❌ uploadStream()✅ ❌ downloadToFile()✅ ❌ downloadToBuffer()✅ ❌ SAS generation ✅ ❌ DefaultAzureCredential ✅ ❌ Anonymous/SAS access ✅ ✅
When to Use This skill is applicable to execute the workflow or actions described in the overview.
Connections
Domain: [[Cloud & Infrastruktur]]
Kategorie: [[Microsoft Azure]]
Navigation: [[Skills Uebersicht]], [[Home]]