Bibliothèque cliente de partage de fichiers stockage Azure pour JavaScript - version 12.18.1
Azure Files offre des partages de fichiers complètement managés dans le cloud, accessibles via le protocole SMB (Server Message Block) standard. Les partages de fichiers Azure peuvent être montés simultanément via des déploiements cloud ou locaux de Windows, Linux et macOS. En outre, les partages de fichiers Azure peuvent être mis en cache sur les serveurs Windows avec Azure File Sync pour un accès rapide à proximité de l’endroit où les données sont utilisées.
Ce projet fournit une bibliothèque cliente en JavaScript qui facilite l’utilisation du service Stockage de fichiers Microsoft Azure.
Utilisez les bibliothèques clientes de ce package pour :
- Obtenir/définir les propriétés du service de fichiers
- Create/Liste/Supprimer des partages de fichiers
- Create/Liste/Supprimer des répertoires de fichiers
- Create/Read/List/Update/Delete Files
Remarque : ce package a été publié précédemment sous le nom
@azure/storage-file
. Il a été renommé en pour mieux s’aligner@azure/storage-file-share
sur le nouveau package à venir pour Azure Storage Files DataLake et fournir un ensemble cohérent d’API pour l’utilisation des fichiers sur Azure.
Liens clés :
- Code source
- Package (npm)
- Documentation de référence de l’API
- Documentation du produit
- Exemples
- API REST de fichier de stockage Azure
Prise en main
Environnements actuellement pris en charge
- Versions LTS de Node.js
- Dernières versions de Safari, Chrome, Edge et Firefox.
Pour plus d’informations, consultez notre politique de support .
Prérequis
Installer le package
La méthode recommandée pour installer la bibliothèque cliente stockage de fichiers Azure pour JavaScript consiste à utiliser le gestionnaire de package npm. Tapez ce qui suit dans une fenêtre de terminal :
npm install @azure/storage-file-share
Authentifier le client
Stockage Azure prend en charge plusieurs façons de s’authentifier. Pour interagir avec le service Partage de fichiers stockage Azure, vous devez créer un instance d’un client de stockage , ShareServiceClient
ShareClient
ou ShareDirectoryClient
par exemple. Consultez les exemples de création de pour en savoir plus sur l’authentification ShareServiceClient
.
Compatibilité
Cette bibliothèque est compatible avec Node.js et les navigateurs, et validée par rapport aux versions Node.js LTS (>=8.16.0) et aux dernières versions de Chrome, Firefox et Edge.
Web Workers
Cette bibliothèque nécessite que certains objets DOM soient disponibles dans le monde entier lorsqu’ils sont utilisés dans le navigateur, ce que les web workers ne rendent pas disponibles par défaut. Vous devrez les remplir pour que cette bibliothèque fonctionne dans les web Workers.
Pour plus d’informations, consultez notre documentation sur l’utilisation du Kit de développement logiciel (SDK) Azure pour JS dans Web Workers
Cette bibliothèque dépend des API DOM suivantes qui nécessitent des polyfills externes chargés lorsqu’ils sont utilisés dans les web Workers :
Différences entre les Node.js et les navigateurs
Il existe des différences entre le runtime Node.js et le runtime des navigateurs. Lorsque vous commencez à utiliser cette bibliothèque, faites attention aux API ou aux classes marquées « UNIQUEMENT DISPONIBLE DANS NODE.JS RUNTIME » ou « UNIQUEMENT DISPONIBLE DANS LES NAVIGATEURS ».
- Si un fichier contient des données compressées au format ou et
deflate
que son encodage de contenu est défini engzip
conséquence, le comportement de téléchargement est différent entre Node.js et les navigateurs. Dans Node.js les clients de stockage téléchargent le fichier dans son format compressé, tandis que dans les navigateurs, les données sont téléchargées au format décompressé.
Les fonctionnalités, interfaces, classes ou fonctions suivantes sont uniquement disponibles dans Node.js
- Autorisation de clé partagée en fonction du nom du compte et de la clé de compte
StorageSharedKeyCredential
- Génération de signature d’accès partagé (SAS)
generateAccountSASQueryParameters()
generateFileSASQueryParameters()
- Chargement et téléchargement parallèles. Notez qu’il
ShareFileClient.uploadData()
est disponible dans les Node.js et les navigateurs.ShareFileClient.uploadFile()
ShareFileClient.uploadStream()
ShareFileClient.downloadToBuffer()
ShareFileClient.downloadToFile()
Les fonctionnalités, interfaces, classes ou fonctions suivantes sont uniquement disponibles dans les navigateurs
N/A
Ensemble JavaScript
Pour utiliser cette bibliothèque cliente dans le navigateur, vous devez d’abord utiliser un bundler. Pour plus d’informations sur la façon de procéder, reportez-vous à notre documentation sur le regroupement.
CORS
Vous devez configurer des règles CORS (Cross-Origin Resource Sharing) pour votre compte de stockage si vous devez développer pour les navigateurs. Accédez à Portail Azure et Explorateur Stockage Azure, recherchez votre compte de stockage, créez des règles CORS pour les services blob/file/file/table.
Par exemple, vous pouvez créer les paramètres CORS suivants pour le débogage. Mais personnalisez soigneusement les paramètres en fonction de vos besoins dans l’environnement de production.
- Origines autorisées : *
- Verbes autorisés : DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
- En-têtes autorisés : *
- En-têtes exposés : *
- Âge maximal (secondes) : 86400
Concepts clés
Les composants suivants et leurs bibliothèques clientes correspondantes constituent le service De partage de fichiers stockage Azure :
- Le compte de stockage lui-même, représenté par un
ShareServiceClient
- Un partage de fichiers au sein du compte de stockage, représenté par un
ShareClient
- Hiérarchie facultative de répertoires au sein du partage de fichiers, représentée par
ShareDirectoryClient
des instances - Un fichier au sein du partage de fichiers, qui peut avoir une taille maximale de 1 Tio, représenté par un
ShareFileClient
Exemples
- Importation du package
- Create le client de service de partage
- Répertorier les partages dans le compte
- Create un nouveau partage et un répertoire
- Create un fichier Azure, puis le charger dans celui-ci
- Répertorier les fichiers et les répertoires sous un répertoire
- Téléchargez un fichier et convertissez-le en chaîne (Node.js)
- Télécharger un fichier et le convertir en chaîne (Navigateurs)
Importation du package
Pour utiliser les clients, importez le package dans votre fichier :
const AzureStorageFileShare = require("@azure/storage-file-share");
Sinon, importez de manière sélective uniquement les types dont vous avez besoin :
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
Create le client de service de partage
nécessite ShareServiceClient
une URL pour le service de partage de fichiers et des informations d’identification d’accès. Il accepte également éventuellement certains paramètres dans le options
paramètre.
utilisation de chaîne de connexion
Vous pouvez également instancier un à l’aide de ShareServiceClient
la fromConnectionString()
méthode statique avec la chaîne de connexion complète comme argument. (Le chaîne de connexion peut être obtenu à partir du portail Azure.)
const { ShareServiceClient } = require("@azure/storage-file-share");
const connStr = "<connection string>";
const shareServiceClient = ShareServiceClient.fromConnectionString(connStr);
Avec StorageSharedKeyCredential
Passez un StorageSharedKeyCredential
avec votre nom de compte et votre clé de compte. (Le nom du compte et la clé de compte peuvent être obtenus à partir du portail Azure.)
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
// When using AnonymousCredential, following url should include a valid SAS
`https://${account}.file.core.windows.net`,
credential
);
avec jeton SAS
En outre, vous pouvez instancier un avec une signature d’accès ShareServiceClient
partagé (SAP). Vous pouvez obtenir le jeton SAS à partir du portail Azure ou en générer un à l’aide de generateAccountSASQueryParameters()
.
const { ShareServiceClient } = require("@azure/storage-file-share");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const serviceClientWithSAS = new ShareServiceClient(
`https://${account}.file.core.windows.net${sas}`
);
Répertorier les partages dans le compte
Utilisez ShareServiceClient.listShares()
pour itérer les partages dans ce compte, avec la nouvelle for-await-of
syntaxe :
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
async function main() {
let shareIter = serviceClient.listShares();
let i = 1;
for await (const share of shareIter) {
console.log(`Share${i}: ${share.name}`);
i++;
}
}
main();
Sinon, sans for-await-of
:
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
async function main() {
let shareIter = serviceClient.listShares();
let i = 1;
let shareItem = await shareIter.next();
while (!shareItem.done) {
console.log(`Share ${i++}: ${shareItem.value.name}`);
shareItem = await shareIter.next();
}
}
main();
Create un nouveau partage et un répertoire
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
async function main() {
const shareName = `newshare${new Date().getTime()}`;
const shareClient = serviceClient.getShareClient(shareName);
await shareClient.create();
console.log(`Create share ${shareName} successfully`);
const directoryName = `newdirectory${new Date().getTime()}`;
const directoryClient = shareClient.getDirectoryClient(directoryName);
await directoryClient.create();
console.log(`Create directory ${directoryName} successfully`);
}
main();
Create un fichier Azure, puis le charger dans celui-ci
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
const shareName = "<share name>";
const directoryName = "<directory name>";
async function main() {
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
const content = "Hello World!";
const fileName = "newfile" + new Date().getTime();
const fileClient = directoryClient.getFileClient(fileName);
await fileClient.create(content.length);
console.log(`Create file ${fileName} successfully`);
// Upload file range
await fileClient.uploadRange(content, 0, content.length);
console.log(`Upload file range "${content}" to ${fileName} successfully`);
}
main();
Répertorier les fichiers et répertoires sous un répertoire
Utilisez DirectoryClient.listFilesAndDirectories()
pour itérer sur les fichiers et les répertoires, avec la nouvelle for-await-of
syntaxe. La kind
propriété peut être utilisée pour déterminer si un iterm est un répertoire ou un fichier.
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
const shareName = "<share name>";
const directoryName = "<directory name>";
async function main() {
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let dirIter = directoryClient.listFilesAndDirectories();
let i = 1;
for await (const item of dirIter) {
if (item.kind === "directory") {
console.log(`${i} - directory\t: ${item.name}`);
} else {
console.log(`${i} - file\t: ${item.name}`);
}
i++;
}
}
main();
Sinon, sans utiliser for-await-of
:
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
const shareName = "<share name>";
const directoryName = "<directory name>";
async function main() {
const directoryClient = serviceClient.getShareClient(shareName).getDirectoryClient(directoryName);
let dirIter = directoryClient.listFilesAndDirectories();
let i = 1;
let item = await dirIter.next();
while (!item.done) {
if (item.value.kind === "directory") {
console.log(`${i} - directory\t: ${item.value.name}`);
} else {
console.log(`${i} - file\t: ${item.value.name}`);
}
item = await dirIter.next();
}
}
main();
Pour obtenir un exemple complet d’itération, consultez samples/v12/typescript/src/listFilesAndDirectories.ts.
Télécharger un fichier et le convertir en chaîne (Node.js)
const { ShareServiceClient, StorageSharedKeyCredential } = require("@azure/storage-file-share");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new StorageSharedKeyCredential(account, accountKey);
const serviceClient = new ShareServiceClient(
`https://${account}.file.core.windows.net`,
credential
);
const shareName = "<share name>";
const fileName = "<file name>";
// [Node.js only] A helper method used to read a Node.js readable stream into a Buffer
async function streamToBuffer(readableStream) {
return new Promise((resolve, reject) => {
const chunks = [];
readableStream.on("data", (data) => {
chunks.push(data instanceof Buffer ? data : Buffer.from(data));
});
readableStream.on("end", () => {
resolve(Buffer.concat(chunks));
});
readableStream.on("error", reject);
});
}
async function main() {
const fileClient = serviceClient
.getShareClient(shareName)
.rootDirectoryClient.getFileClient(fileName);
// Get file content from position 0 to the end
// In Node.js, get downloaded data by accessing downloadFileResponse.readableStreamBody
const downloadFileResponse = await fileClient.download();
console.log(
`Downloaded file content: ${(
await streamToBuffer(downloadFileResponse.readableStreamBody)
).toString()}`
);
}
main();
Télécharger un fichier et le convertir en chaîne (Navigateurs)
Pour plus d’informations sur l’utilisation de cette bibliothèque dans le navigateur, consultez la section JavaScript Bundle .
const { ShareServiceClient } = require("@azure/storage-file-share");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const shareName = "<share name>";
const fileName = "<file name>";
const serviceClient = new ShareServiceClient(`https://${account}.file.core.windows.net${sas}`);
async function main() {
const fileClient = serviceClient
.getShareClient(shareName)
.rootDirectoryClient.getFileClient(fileName);
// Get file content from position 0 to the end
// In browsers, get downloaded data by accessing downloadFileResponse.blobBody
const downloadFileResponse = await fileClient.download(0);
console.log(
`Downloaded file content: ${await blobToString(await downloadFileResponse.blobBody)}`
);
}
// [Browser only] A helper method used to convert a browser Blob into string.
async function blobToString(blob) {
const fileReader = new FileReader();
return new Promise((resolve, reject) => {
fileReader.onloadend = (ev) => {
resolve(ev.target.result);
};
fileReader.onerror = reject;
fileReader.readAsText(blob);
});
}
main();
Voici un exemple complet de scénarios simples ShareServiceClient
dans samples/v12/typescript/src/shareSerivceClient.ts.
Dépannage
L’activation de la journalisation peut vous aider à mieux comprendre les échecs. Pour avoir un journal des requêtes et réponses HTTP, définissez la variable d’environnement AZURE_LOG_LEVEL
sur info
. Vous pouvez également activer la journalisation au moment de l’exécution en appelant setLogLevel
dans @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Étapes suivantes
Autres exemples de code
- Exemples de stockage de partage de fichiers (JavaScript)
- Exemples de stockage de partage de fichiers (TypeScript)
- Cas de test de stockage de partage de fichiers
Contribution
Si vous souhaitez contribuer à cette bibliothèque, lisez le guide de contribution pour en savoir plus sur la génération et le test du code.
Reportez-vous également au Guide spécifique au stockage pour plus d’informations sur la configuration de l’environnement de test pour les bibliothèques de stockage.
Azure SDK for JavaScript
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour