Carga de un blob con JavaScript o TypeScript
En este artículo se muestra cómo cargar un blob con la biblioteca cliente de Azure Storage para JavaScript. Puede cargar datos en un blob en bloques desde una ruta de acceso de archivo, una secuencia, un búfer o una cadena de texto. También puede cargar blobs con etiquetas de índice.
Requisitos previos
- Los ejemplos de este artículo asumen que ya tiene un proyecto configurado para trabajar con la librería cliente Azure Blob Storage para JavaScript. Para obtener más información sobre la configuración del proyecto, incluida la instalación de paquetes, la importación de módulos y la creación de un objeto cliente autorizado para trabajar con recursos de datos, consulte Introducción a Azure Blob Storage y JavaScript.
- El mecanismo de autorización debe tener permisos para realizar una operación de carga. Para obtener más información, consulte la guía de autorización para las siguientes operaciones de la API de REST:
Carga de datos en un blob en bloques
Puede usar cualquiera de los métodos siguientes para cargar datos en un blob en bloques:
- upload (método de carga no paralelo)
- uploadData
- uploadFile (solo disponible en el entorno de ejecución de Node.js)
- uploadStream (solo disponible en el entorno de ejecución de Node.js)
Se puede llamar a cada uno de estos métodos mediante un objeto BlockBlobClient.
Carga de un blob en bloques desde una ruta de acceso de archivo
El siguiente ejemplo carga un blob de bloque desde una ruta de archivo 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);
}
Carga de un blob en bloques desde una secuencia
En el siguiente ejemplo se carga un blob en bloques al crear y cargar un flujo legible:
// 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);
}
Carga de un blob en bloques desde un búfer
El siguiente ejemplo carga un blob de bloques desde un buffer 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);
}
Carga de un blob en bloques desde una cadena
El siguiente ejemplo carga un blob de bloque desde una cadena:
// 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);
}
Carga de un blob en bloques con opciones de configuración
Puede definir las opciones de configuración de la biblioteca cliente al cargar un blob. Estas opciones se pueden ajustar para mejorar el rendimiento, mejorar la confiabilidad y optimizar los costes. Los ejemplos de código de esta sección muestran cómo establecer las opciones de configuración usando la interfaz BlockBlobParallelUploadOptions y cómo pasar esas opciones como parámetro a una llamada al método de carga.
Especificación de opciones de transferencia de datos al cargar
Puede configurar las propiedades en BlockBlobParallelUploadOptions para mejorar el rendimiento de las operaciones de transferencia de datos. En la tabla siguiente se enumeran las propiedades que puede configurar, junto con una descripción:
Propiedad | Descripción |
---|---|
blockSize |
Tamaño máximo de bloque que se va a transferir para cada solicitud como parte de una operación de carga. |
concurrency |
El número máximo de solicitudes paralelas que se emiten en cualquier momento dado como parte de una única transferencia paralela. |
maxSingleShotSize |
Si el tamaño de los datos fuera menor o igual que este valor, se cargará en una sola colocación en lugar de dividirse en fragmentos. Si los datos se cargasen en una sola captura, se omitirá el tamaño del bloque. El valor predeterminado es 256 MiB. |
El siguiente ejemplo de código muestra cómo establecer valores para BlockBlobParallelUploadOptions e incluir las opciones como parte de una llamada al método de carga. Los valores proporcionados en las muestras no pretenden ser una recomendación. Para ajustar correctamente estos valores, debe tener en cuenta las necesidades específicas de la aplicación.
// 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);
}
Para más información sobre cómo ajustar las opciones de transferencia de datos, consulte Ajuste del rendimiento para cargas y descargas con JavaScript.
Carga de un blob en bloques con etiquetas de índice
Las etiquetas de índice de blobs clasifican los datos de la cuenta de almacenamiento mediante atributos de etiqueta clave-valor. Estas etiquetas se indexan y se exponen automáticamente como un índice multidimensional que se puede buscar para encontrar fácilmente los datos.
El siguiente ejemplo carga un blob de bloque con etiquetas de índice establecidas usando 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);
}
Establecimiento del nivel de acceso de un blob durante la carga
El uso de la interfaz BlockBlobParallelUploadOptions permite establecer el nivel de acceso de un blob al cargarlo. En el ejemplo de código siguiente se muestra cómo establecer el nivel de acceso al cargar un 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);
}
Solo se permite establecer el nivel de acceso en los blobs en bloques. Puede establecer el nivel de acceso de un blob en bloques en Hot
, Cool
, Cold
o Archive
. Para establecer el nivel de acceso en Cold
, debe usar la versión mínima de la biblioteca cliente 12.13.0.
Si desea obtener más información sobre los niveles de acceso, consulte Información general sobre los niveles de acceso.
Recursos
Para más información sobre cómo cargar listas de blobs con la biblioteca cliente de Azure Blob Storage para JavaScript, consulte los recursos siguientes.
Operaciones de API REST
El SDK de Azure para JavaScript contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de JavaScript. Los métodos de la biblioteca cliente para cargar blobs usan las siguientes operaciones de API REST:
Ejemplos de código
Visualización de ejemplos de código de este artículo (GitHub):
- Carga desde la ruta de acceso del archivo local para JavaScript o TypeScript
- Carga desde el búfer para JavaScript o TypeScript
- Carga desde secuencia para JavaScript o TypeScript
- Carga desde una cadena para JavaScript o TypeScript
- Carga con opciones de transferencia para JavaScript o TypeScript
- Carga con etiquetas de índice para JavaScript o TypeScript
- Carga con el nivel de acceso para JavaScript o TypeScript
Recursos de la biblioteca cliente
- Documentación de referencia de la biblioteca cliente
- Código fuente de la biblioteca del cliente
- Paquete (npm)
Consulte también
- Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs
- Uso de etiquetas de índice de blobs para administrar y buscar datos en Azure Blob Storage
Contenido relacionado
- Este artículo forma parte de la guía para desarrolladores de Blob Storage para JavaScript/Typescript. Para obtener más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación JavaScript/Typescript.