Aviso:

Para brindarle información de soporte completa de manera más rápida, el contenido de esta página ha sido traducido al español mediante traducción automática. Para consultar la información de soporte más precisa, consulte la versión en inglés de este contenido.

Descargar objeto

Download an Object

Los SDKs presentes en esta sección te permitirán descargar un objeto en particular, múltiples objetos o una versión del objeto. La referencia del Bucket utilizada en el fragmento de código a continuación es la instancia del componente.

El primer paso de la operación de descarga es una operación GET que recupera el objeto requerido del bucket.

Para poder descargar un objeto, el solicitante debe tener permisos de acceso READ. Sin embargo, los propietarios del bucket tienen la opción de otorgar permisos de acceso READ a los usuarios, permitiéndoles descargar el objeto sin usar los encabezados de respuesta requeridos.

Si el Versionado está habilitado para tu bucket, necesitas pasar el versionId para descargar la versión particular del objeto. Si no se pasa ningún versionId, entonces por defecto se descargará la última versión del objeto.

Si el Versionado fue habilitado para un bucket y luego deshabilitado, por defecto se descargará el primer objeto principal. Para asegurarte de descargar la última versión de este objeto, necesitas pasar el parámetro versionId con el valor “topVersion”.

copy
const res = await bucket.getObject("sam/out/sample.txt");
// descargar el objeto a la máquina local
const files = fs.createWriteStream('filePath');
res.on('data', (data) => {
files.write(data)
});

Download a Portion of the Object

El siguiente método del SDK se utiliza con el parámetro range. El parámetro range te permite descargar un rango específico de bytes de un objeto.

copy
const options = {
'versionId': 'djkshr8374yiuhf48', // descargar el objeto con el versionId dado
'range': '0-2000' // rango inicial y final del objeto en bytes
}
const res = await bucket.getObject("sam/out/sample.txt", options);
// descargar el objeto a tu máquina local
const files = fs.createWriteStream('filePath');
res.on('data', (data) => {
files.write(data)
});

Download an Object Using Transfer Manager

En esta sección, vamos a revisar los métodos del SDK que te permitirán descargar exitosamente objetos grandes de Stratus a tu sistema local usando la técnica Transfer Manager. Transfer Manager es una operación donde el objeto grande se divide en múltiples rangos de bytes usando los bytes de inicio y fin del objeto. Cada una de las partes del objeto se devuelve como un stream y se descargan en tu sistema local.

Asegúrate de que los siguientes paquetes estén importados

copy
const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');

Create Transfer Manager Instance

copy
 const transferManager = new TransferManager(bucket); // crear instancia de transfer manager

Download Object as Iterable Part Streams

copy
const partSize=50;
const getObjectRes = await transferManager.getIterableObject("sam/out/sample.txt",partSize);
// descargar el objeto a la máquina local
const file = fs.createWriteStream('filePath'); // crear un stream de escritura de archivo
for await (const chunk of getObjectRes) {
file.write(chunk);
}

Generate Object Parts for Download

En este método del SDK descargaremos una porción del objeto que se encuentra dentro del rango de bytes de inicio y fin requerido.

copy
const file = fs.createWriteStream("filePath");
const partSize = 50;
const downloadRes = await transferManager.generatePartDownloaders("sam/out/sample.txt", partSize);
let partNum = 0;
while (partNum < downloadRes.length) {
const objectPart = downloadRes[partNum++];
const buffer = await objectPart(); // retorna la parte del objeto como stream
// procesar el stream
}

Generate Presigned URL to Download an Object

Las URLs prefirmadas son URLs seguras que los usuarios autenticados pueden compartir con sus usuarios no autenticados. Esta URL proporcionará a los usuarios no autenticados autorización temporal para acceder a objetos. La referencia del Bucket utilizada en el fragmento de código a continuación es la instancia del componente.

Info: Para usar este método del SDK, necesitas inicializarlo con el ámbito Admin. Puedes obtener más información sobre este requisito en esta sección

Parámetros utilizados

Nombre del parámetro Tipo de dato Definición
key String Un parámetro obligatorio. Contendrá el nombre completo del objeto junto con su ruta.
urlAction Request Method Un parámetro obligatorio. Este es el parámetro que te permitirá generar una URL prefirmada para una acción de descarga (GET).
  • GET: Para descargar un objeto
expiry String Este es un parámetro opcional. El tiempo de validez de la URL en segundos.
  • Valor predeterminado: 3600 segundos
  • Valor mínimo: 30 segundos
  • Valor máximo: 7 días
activeFrom String Este es un parámetro opcional. Este parámetro contendrá el momento a partir del cual la URL es válida. El valor máximo es 7 días. Las URLs se activan tan pronto como se generan de forma predeterminada.
copy
const signedURLRes = await bucket.generatePreSignedUrl("sam/out/sample.txt", 'GET', {
'expiryIn': 100, // tiempo de expiración en segundos
'activeFrom':'12334454327', // activar la URL en la fecha dada
'versionId': '746398diij94839'
});
console.log(signedURLRes);

Respuesta de ejemplo para generar una URL prefirmada para descarga

copy
{
"signature": "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto",
"expiry_in_seconds": "100",
"active_from": "12334454327"
}

Fragmento de ejemplo que ilustra el uso de una URL prefirmada para descargar un objeto

Info: Este ejemplo se muestra usando el paquete de manejo de solicitudes Axios.
copy
const axios = require('axios');
const fs = require('fs');
// Reemplazar con la URL pre-firmada real de tu archivo.
const url = 'https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto';
(async () => {
try {
// Enviar solicitud GET para descargar el archivo como un stream
const response = await axios.get(url, { responseType: 'stream' });
// Crear un stream de escritura para guardar el archivo localmente
const file = fs.createWriteStream('file_path'); // Reemplaza con la ruta de salida deseada
// Canalizar el stream de respuesta al stream del archivo
response.data.pipe(file);
// Notificar cuando el archivo haya sido descargado
file.on('finish', () => {
console.log('File downloaded successfully');
});
//  Manejar cualquier error durante la escritura
file.on('error', (err) => {
console.error('Error writing file:', err);
});
} catch (err) {
console.error('Error downloading file:', err);
}
})();

Última actualización 2026-03-30 13:40:30 +0530 IST