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”.
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.
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
const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');
Create Transfer Manager Instance
const transferManager = new TransferManager(bucket); // crear instancia de transfer manager
Download Object as Iterable Part Streams
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.
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.
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).
|
| expiry | String | Este es un parámetro opcional. El tiempo de validez de la URL en segundos.
|
| 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. |
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
{
"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
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
Yes
No
Send your feedback to us