--- title: "Descargar objeto" url: https://docs.catalyst.zoho.com/es/sdk/java/v1/cloud-scale/stratus/download-object/ description: "Esta página lista el método del Java SDK para descargar objetos de un bucket." last_updated: 2026-03-30T08:10:30Z service: Cloud Scale type: general related_links: - name: "Stratus Component Help Documentation" url: /es/cloud-scale/help/stratus/introduction - name: "Download Object Help Documentation" url: /es/cloud-scale/help/stratus/objects/manage-object/download-object/ - name: "Node.js SDK" url: /es/sdk/nodejs/v2/cloud-scale/stratus/download-object/ - name: "Python SDK" url: /es/sdk/python/v1/cloud-scale/stratus/download-object/ - name: "Web SDK" url: /es/sdk/web/v4/cloud-scale/stratus/overview/ - name: "iOS SDK" url: /es/sdk/ios/v2/cloud-scale/stratus/download-object/ - name: "Android SDK" url: /es/sdk/android/v2/cloud-scale/stratus/download-object/ - name: "Flutter SDK" url: /es/sdk/flutter/v2/cloud-scale/stratus/download-object/ - name: "REST API" url: /es/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets --- # Descargar objeto Los SDKs presentes en esta sección te permitirán [descargar un objeto particular](https://docs.catalyst.zoho.com/es/cloud-scale/help/stratus/objects/manage-object/download-object/), o una versión del objeto. La referencia de Bucket utilizada en el siguiente fragmento de código es la [instancia del componente](https://docs.catalyst.zoho.com/es/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/). 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 [Versioning](https://docs.catalyst.zoho.com/es/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) está habilitado para tu bucket, necesitas pasar el `versionId` para descargar la versión particular del objeto. Si no se pasa ningún `versionId`, por defecto se descargará la última versión del objeto. Si *Versioning* fue habilitado para un bucket y luego deshabilitado, por defecto se descargará el objeto principal primero. Para asegurarte de descargar la última versión de este objeto, necesitas pasar el parámetro `versionId` con el valor "`topVersion`". #### Fragmento de código de ejemplo **Package Imports** ```java import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; ``` ```java InputStream dataStream = bucket.getObject("sam/out/sample.txt"); // descargar el objeto a tu máquina local Path path = Path.of("file_path"); // especificar una ruta para almacenar el objeto descargado Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); ``` ### Descargar una porción del objeto El siguiente SDK implementa el método `setRange()`. Este método te permite descargar un rango específico de bytes de un objeto. #### Fragmento de código de ejemplo **Package Imports** ```java import com.zc.component.stratus.beans.ZCGetObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; ``` ```java // agregar opciones de descarga ZCGetObjectOptions options = ZCGetObjectOptions.getInstance(); options.setVersionId("3yt5ehjbjghds3i28"); options.setRange("20-200"); // rango inicial y final del objeto en bytes InputStream dataStream = bucket.getObject("sam/out/sample.txt", options); // descargar el objeto a tu máquina local Path path = Path.of("file_path"); // especificar una ruta para almacenar el objeto descargado Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); ``` ### Descargar un objeto usando 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 a tu sistema local. #### Crear instancia de Transfer Manager #### Fragmento de código de ejemplo **Package Imports** ```java import com.zc.component.stratus.transfer.ZCTransferManager; ``` ```java ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket); ``` #### Descargar objeto como streams de partes iterables #### Fragmento de código de ejemplo **Package Imports** ```java import java.nio.file.StandardOpenOption; import java.nio.file.Files; import java.util.Iterator; import java.nio.file.Path; import java.io.*; ``` ```java Iterable <InputStream> Iterable = transferManager.getIterableObject("sam/out/sample.txt", 100 L); Path path = Path.of("file_path"); Iterator <InputStream> res = Iterable.iterator(); while (res.hasNext()) { InputStream data = res.next(); // obtener cada parte del objeto como stream Files.copy(data, path, StandardCopyOption.REPLACE_EXISTING); // escribir el stream en la ruta de archivo local } ``` #### Generar partes de objeto para descarga En este método del SDK descargaremos una porción del objeto que se encuentra dentro del rango requerido de bytes de inicio y fin. **Parámetros utilizados** * `PartSize`: Es el tamaño de cada parte en Mb * `key`: Contendrá el nombre del objeto #### Fragmento de código de ejemplo **Package Imports** ```java import java.nio.file.StandardOpenOption; import java.nio.file.Files; import com.zc.component.stratus.beans.ZCStratusGetObject; import java.nio.file.Path; import java.io.*; ``` ```java Path path = Path.of("file_path"); // obtener la lista de funciones de partes List<ZCStratusGetObject> parts = transferManager.generatePartDownloaders("sam/out/sample.txt", 100L); // crear un archivo para almacenar el stream descargado. Files.createFile(path); int partNumber = 1; // ejecutar cada función para descargar las partes del objeto for (ZCStratusGetObject part : parts) { // obtener la parte del objeto como stream InputStream inputStream = part.getPart(); System.out.println("Part "+ partNumber++ + " Downloaded"); // escribir los datos del stream en la máquina local Files.write(path, inputStream.readAllBytes(), StandardOpenOption.APPEND); } ``` ### Generar URL prefirmada para descargar un objeto 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 de Bucket utilizada en el siguiente fragmento de código es la [instancia del componente](https://docs.catalyst.zoho.com/es/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/). > **Info:** Para usar este método del SDK, necesitas inicializarlo con el scope **Admin**. Puedes obtener más información sobre este requisito en esta [sección](https://docs.catalyst.zoho.com/es/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes) **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](https://docs.catalyst.zoho.com/es/cloud-scale/help/stratus/objects/introduction/#path).
`URL_ACTION` **Enum** Un parámetro **obligatorio**. Este es el parámetro que te permitirá generar una URL prefirmada para la acción de descarga.
  • `URL_ACTION.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 tiempo después del cual la URL es válida. El valor máximo es **7 días**. Las URLs se activan tan pronto como se generan por defecto.
#### Fragmento de código de ejemplo **Package Imports** ```java import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; ``` ```java JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt",URL_ACTION.GET); System.out.println(res.get("signature")); ``` ### Generar URL prefirmada con tiempo de expiración y activación #### Fragmento de código de ejemplo **Package Imports** ```java import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; ``` ```java JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); ``` **Ejemplo de respuesta para generar una URL prefirmada para descarga** ```json { signature: 'https://sadi-development.zoho stratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE' } ``` **Ejemplo de fragmento que ilustra el uso de URL prefirmada para subir un objeto** **Package Imports** ```java import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; ``` ```java public class Download { public static void main(String[] args) throws IOException { // Crear una instancia de OkHttpClient para manejar la solicitud HTTP OkHttpClient client = new OkHttpClient(); // Construir la solicitud GET con la URL pre-firmada Request request1 = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747905744487&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=pCjV9xckDOqBCueE_gBeMbp12StddTghBK_8HUwU5k0") // Reemplazar con su URL real .build(); // Ejecutar la solicitud y manejar la respuesta try (Response response1 = client.newCall(request1).execute()) { // Verificar si la respuesta fue exitosa if (!response1.isSuccessful()) { throw new IOException("Unexpected code " + response1); } // Obtener el cuerpo de la respuesta como un InputStream ResponseBody body = response1.body(); if (body != null) { // Crear un stream para escribir el archivo en disco try (InputStream in = body.byteStream(); OutputStream out = new FileOutputStream("file_path")) { // Reemplaza file_path con la ruta real // Leer los datos de la respuesta en bloques y escribir en el archivo byte[] buffer = new byte[8192]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } // Imprimir confirmación después de descarga exitosa System.out.println("Download complete."); } } } catch (IOException e) { // Imprimir traza de pila si ocurre un error durante la descarga e.printStackTrace(); } } } ```