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 :

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, Coldou 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) :

Ressources de bibliothèque cliente

Voir aussi