Charger un objet blob avec JavaScript ou TypeScript
Cet article explique comment charger un objet blob en utilisant la Bibliothèque de client Stockage Azure pour JavaScript. Vous pouvez charger des données dans un objet blob de blocs depuis un chemin d’accès de fichier, un flux, un tampon ou une chaîne de texte. Vous pouvez aussi charger des objets blob avec des balises d’index.
Prérequis
- Les exemples de cet article supposent que vous disposez déjà d'un projet configuré pour fonctionner avec la bibliothèque client Azure Blob Storage pour JavaScript. Pour en savoir plus sur la configuration de votre projet, y compris l’installation du package, l’importation de modules et la création d’un objet client autorisé à utiliser les ressources de données, consultez Prise en main de Stockage Blob Azure et JavaScript.
- Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour effectuer une opération de chargement. Pour plus d’informations, consultez les conseils d’autorisation pour les opérations d’API REST suivantes :
Charger des données dans un blob de blocs
Vous pouvez utiliser l’une des méthodes suivantes pour charger des données dans un objet blob de blocs :
- chargement (méthode de chargement non parallèle)
- uploadData
- uploadFile (disponible uniquement dans le runtime Node.js)
- uploadStream (disponible uniquement dans le runtime Node.js)
Chacune de ces méthodes peut être appelée en utilisant un objet BlockBlobClient.
Charger un objet blob de blocs à partir d’un chemin de fichier
L’exemple suivant charge un objet blob de blocs à partir du chemin d'accès d’un fichier local :
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadBlobFromLocalPath(containerClient, blobName, localFilePath){
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath);
}
Charger un blob de blocs à partir d’un flux
L’exemple suivant charge un objet blob de blocs en créant un flux lisible et en le chargeant :
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// readableStream: Readable stream, for example, a stream returned from fs.createReadStream()
async function uploadBlobFromReadStream(containerClient, blobName, readableStream) {
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload data to block blob using a readable stream
await blockBlobClient.uploadStream(readableStream);
}
Charger un objet blob de blocs à partir d’une mémoire tampon
L’exemple suivant charge un objet blob de blocs à partir d’une mémoire tampon Node.js :
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// buffer: blob contents as a buffer, for example, from fs.readFile()
async function uploadBlobFromBuffer(containerClient, blobName, buffer) {
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload buffer
await blockBlobClient.uploadData(buffer);
}
Charger un objet blob de blocs à partir d’une chaîne
L’exemple suivant charge un objet blob de blocs à partir d’une chaîne :
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// fileContentsAsString: blob content
async function uploadBlobFromString(containerClient, blobName, fileContentsAsString){
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length);
}
Charger un objet blob de blocs avec des options de configuration
Vous pouvez définir des options de configuration de bibliothèque de client lors du chargement d’un objet blob. Ces options peuvent être paramétrées pour améliorer les performances, améliorer la fiabilité et optimiser les coûts. Les exemples de code de cette section montrent comment définir des options de configuration à l’aide de l’interface BlockBlobParallelUploadOptions et comment transmettre ces options en tant que paramètre à un appel de méthode de chargement.
Spécifier les options de transfert de données lors du chargement
Vous pouvez configurer des propriétés dans BlockBlobParallelUploadOptions pour améliorer le niveau de performance des opérations de transfert de données. Le tableau suivant répertorie les propriétés que vous pouvez configurer, ainsi qu’une description :
Propriété | Description |
---|---|
blockSize |
Taille de bloc maximale à transférer pour chaque requête dans le cadre d’une opération de chargement. |
concurrency |
Nombre maximal de requêtes parallèles émises à un moment donné dans le cadre d’un transfert parallèle unique. |
maxSingleShotSize |
Si la taille des données est inférieure ou égale à cette valeur, elles sont chargées en un seul PUT, au lieu de les diviser en blocs. Si les données sont chargées en une seule capture, la taille du bloc est ignorée. La valeur par défaut est 256 Mio. |
L’exemple de code suivant montre comment définir des valeurs pour BlockBlobParallelUploadOptions et inclure les options dans le cadre d’une appel de méthode de chargement. Les valeurs fournies dans les exemples ne sont pas destinées à être une recommandation. Pour régler correctement ces valeurs, vous devez tenir compte des besoins spécifiques de votre application.
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithTransferOptions(containerClient, blobName, localFilePath) {
// Specify data transfer options
const uploadOptions = {
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
concurrency: 2, // maximum number of parallel transfer workers
maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with transfer options
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Pour en savoir plus sur le réglage des options de transfert de données, consultez Réglage des performances pour les chargements et les téléchargements avec JavaScript.
Charger un blob de blocs avec des balises d’index
Les balises d’index de blob catégorisent les données de votre compte de stockage à l’aide d’attributs de balise clé-valeur. Ces balises sont automatiquement indexées et exposées en tant qu’index multidimensionnel pouvant faire l’objet d’une recherche pour trouver facilement des données.
L’exemple suivant charge un objet blob de blocs avec des balises d’index définies en utilisant BlockBlobParallelUploadOptions :
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithIndexTags(containerClient, blobName, localFilePath) {
// Specify index tags for blob
const uploadOptions = {
tags: {
'Sealed': 'false',
'Content': 'image',
'Date': '2022-07-18',
}
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with index tags
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Définir le niveau d’accès d’un objet blob pendant le chargement
Vous pouvez définir le niveau d’accès d’un objet blob lors du chargement en utilisant l’interface BlockBlobParallelUploadOptions. L’exemple de code suivant montre comment définir le niveau d’accès lors du chargement d’un objet blob :
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithAccessTier(containerClient, blobName, localFilePath) {
// Specify access tier
const uploadOptions = {
// 'Hot', 'Cool', 'Cold', or 'Archive'
tier: 'Cool',
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob to cool tier
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
La définition du niveau d’accès est autorisée seulement sur les objets blob de blocs. Vous pouvez définir le niveau d’accès d’un objet blob de blocs sur Hot
, Cool
, Cold
ou Archive
. Pour définir le niveau d’accès sur Cold
, vous devez utiliser une version minimale de la bibliothèque cliente de la version 12.13.0.
Pour en savoir plus sur les niveaux d’accès, consultez Vue générale des niveaux d’accès .
Ressources
Pour en savoir plus sur le chargement d’objets blob à l’aide de la bibliothèque de client Stockage Blob Azure pour JavaScript, consultez les ressources suivantes.
Opérations de l'API REST
Le Kit de développement logiciel (SDK) Azure pour JavaScript contient des bibliothèques qui s’appuient sur l’API REST Azure, vous permettant d’interagir avec des opérations de l’API REST par le biais de paradigmes JavaScript familiers. Les méthodes de bibliothèque de client pour le chargement d’objets blob utilisent les opérations d’API REST suivantes :
Exemples de code
Afficher des exemples de code de cet article (GitHub) :
- Charger à partir d’un chemin d’accès de fichier local pour JavaScript ou TypeScript
- Charger à partir d’une mémoire tampon pour JavaScript ou TypeScript
- Charger à partir d’un flux pour JavaScript ou TypeScript
- Charger à partir d’une chaîne pour JavaScript ou TypeScript
- Charger avec des options de transfert pour JavaScript ou TypeScript
- Charger avec des balises d’index pour JavaScript ou TypeScript
- Charger avec le niveau d’accès pour JavaScript ou TypeScript
Ressources de bibliothèque cliente
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (npm)
Voir aussi
- Gérer et rechercher des données blob Azure dans l’index d’objet blob
- Utiliser des balises d’index de blob pour gérer et rechercher des données sur Stockage Blob Azure
Contenu connexe
- Cet article fait partie du guide du développeur Stockage Blob pour JavaScript/Typescript. Pour plus d’informations, consultez la liste complète des articles du guide du développeur dans Générer votre application JavaScript/Typescript.