> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Trabajar con archivos

> Intercambie archivos con el Servidor de aplicaciones de ABBYY FlexiCapture mediante solicitudes POST: cargar, guardar, anexar y calcular la suma de comprobación de imágenes, archivos adjuntos y datos XML.

Para intercambiar archivos con el Servidor de aplicaciones, use una solicitud POST.

Antes de enviar solicitudes de archivos, conéctese a la API de servicios web. Para obtener más información, consulte [Conectarse a la API de servicios web](/es/flexi-capture/api/using/connecting).

<div id="types-of-actions">
  ## Tipos de acciones
</div>

Utilice solicitudes POST para realizar las siguientes acciones:

| Valor de acción | Descripción                                                                                                              |
| --------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `Load`          | Cargar archivos del servidor.                                                                                            |
| `Save`          | Guardar archivos en el servidor.                                                                                         |
| `Append`        | Anexar datos al final de un archivo.                                                                                     |
| `Checksum`      | Obtener la suma de comprobación de un archivo del servidor. La suma de comprobación se calcula mediante el método CRC32. |

<div id="common-use-cases">
  ## Casos de uso comunes
</div>

* Importe imágenes. Cargue archivos de imagen, incluso por partes, y obtenga su suma de comprobación.
* Obtenga las imágenes de las páginas originales en cualquier momento durante el procesamiento.
* Trabaje con archivos adjuntos de lotes, documentos y páginas (carga y descarga).
* Obtenga la descripción XML de una tarea de verificación, modifique el documento y guarde los cambios en el servidor.

<Info>
  Para archivos adjuntos grandes, use solicitudes POST. Los archivos grandes se dividen en partes más pequeñas y se cargan en el servidor. Cuando use una solicitud POST para agregar un archivo adjunto a un objeto, llame al método [SaveAttachment](/es/flexi-capture/api/methods/save-attachment) después de la solicitud POST, pasando un archivo de longitud cero con el nombre del archivo transferido como parámetro `file`. En otros casos, use los métodos [Attachments](/es/flexi-capture/api/methods/attachments), desarrollados específicamente para archivos adjuntos.
</Info>

<div id="request-parameters">
  ## Parámetros de la solicitud
</div>

<Note>
  Asegúrese de que los campos de la solicitud estén completados correctamente.
</Note>

| Nombre       | Tipo   | Descripción                                                                                                                                   |
| ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `Action`     | string | Tipo de acción. Para obtener más información, consulte [Tipos de acciones](#types-of-actions).                                                |
| `sessionId`  | int    | ID de sesión, utilizado para comprobar los permisos del usuario.                                                                              |
| `projectId`  | int    | ID de proyecto.                                                                                                                               |
| `batchId`    | int    | ID del lote.                                                                                                                                  |
| `objectType` | int    | Tipo de objeto en el servidor. Para obtener más información, consulte [Tipos de objetos](#object-types).                                      |
| `objectId`   | int    | ID de objeto (de un documento, una página o una tarea).                                                                                       |
| `parentId`   | int    | ID del documento padre. Especifique este valor para conjuntos de documentos; para los documentos que no formen parte de un conjunto, use `0`. |
| `version`    | int    | Versión del archivo.                                                                                                                          |
| `streamName` | string | Nombre del flujo binario codificado. Para obtener más información, consulte [Nombres de flujos](#stream-names).                               |
| `blob`       | —      | Datos binarios del archivo (cuando `Action` es `Save` o `Append`).                                                                            |
| `offset`     | int    | Desplazamiento desde el inicio del archivo, después del cual se anexan los datos (cuando `Action` es `Append`).                               |

<div id="object-types">
  ### Tipos de objeto
</div>

El parámetro `objectType` acepta los siguientes valores:

| Valor | Tipo de objeto                                                                           |
| ----- | ---------------------------------------------------------------------------------------- |
| `0`   | Documento                                                                                |
| `1`   | Página                                                                                   |
| `5`   | Copia pequeña de la página mostrada como miniatura (archivo PNG)                         |
| `8`   | Archivo adjunto de la tarea (documento XML)                                              |
| `13`  | Archivo accesible para todos los usuarios, como un Contrato de licencia de usuario final |

<Info>
  El tipo de objeto `8` (archivo adjunto de la tarea) es más eficaz para archivos adjuntos grandes. En otros casos, use los métodos de [Attachments](/es/flexi-capture/api/methods/attachments), desarrollados específicamente para archivos adjuntos.
</Info>

<Note>
  Para los archivos del tipo de objeto `13`, establezca `projectId` en `0` y `batchId` en `0` — estos archivos no pertenecen a ningún proyecto, lote ni tenant. Para escribir un archivo de este tipo, el administrador debe abrir una sesión. Para leer un archivo de este tipo, pase `sessionId=0`; no es necesario abrir una sesión.
</Note>

<div id="stream-names">
  ### Nombres de flujos
</div>

El parámetro `streamName` es el nombre del flujo binario. Use la codificación Base64 al guardar un archivo en el servidor y la codificación UrlEncode al cargar un archivo desde el servidor. Los valores disponibles dependen del tipo de objeto.

<div id="page-stream-names">
  #### Nombres de flujos de la página
</div>

| Valor             | Descripción                                             |
| ----------------- | ------------------------------------------------------- |
| `BlackWhiteImage` | La imagen en blanco y negro de la página (archivo PNG). |
| `ColorImage`      | La imagen en color de la página (archivo JPG).          |
| `Preview`         | La imagen de vista previa de la página (archivo PNG).   |

<div id="document-stream-names">
  #### Nombres de flujos de documentos
</div>

| Valor             | Descripción                                                                                                                                                                                                                                                                                                                             |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DocumentBody`    | Un documento XML que describe los campos del documento. Se crea al preparar la tarea para las estaciones web. Después de la verificación, se procesan los cambios realizados en el documento. No se admiten versiones; establezca el parámetro `version` en `0`. Guarde en este archivo los resultados del procesamiento del documento. |
| `Page` `pageID`   | `pageID` es el ID de una página devuelta por el método [AddNewPage](/es/flexi-capture/api/methods/add-new-page). Use este nombre de flujo para cargar una imagen de la página de origen antes del preprocesamiento.                                                                                                                     |
| `FileName`        | `FileName` es el nombre de un archivo especificado al crear el documento con el método [AddNewDocument](/es/flexi-capture/api/methods/add-new-document). Use este nombre de flujo para cargar un archivo multipágina con imágenes de las páginas del documento.                                                                         |
| `RecognizedWords` | Un documento XML que contiene palabras reconocidas y sus coordenadas en la página.                                                                                                                                                                                                                                                      |

<div id="task-stream-names">
  #### Nombres de los flujos de tareas
</div>

* `Verification` — Un documento XML que describe una tarea de verificación. Se crea al preparar la tarea para las estaciones web. Después de la verificación, se procesan los cambios del documento. No se admiten versiones; establezca el parámetro `version` en `1`. Guarde en este archivo los resultados del procesamiento de la tarea.
* `VerificationRequest` — Corresponde a una de las siguientes solicitudes:
  * Un documento XML que contiene una solicitud para ejecutar operaciones dentro de un lote, incluida la separación de documentos y la reorganización de páginas. La estación web utiliza este tipo de solicitud para las comprobaciones de reglas.
  * Un documento XML que contiene una solicitud de enrutamiento.
  * Un documento XML que contiene una solicitud de extrapolación de `LineItems`.
  * Un documento XML que contiene una solicitud de verificación de datos.

<div id="file-storage">
  ## Almacenamiento de archivos
</div>

El almacenamiento de archivos contiene todos los archivos del proyecto. El nombre del archivo codifica el tipo de objeto, el identificador del objeto y el nombre del flujo con el formato `<object type>-<object id>-<stream name>version`.

Los archivos de página (`objectType = 1`) contienen copias de imágenes, mientras que los archivos de documento (`objectType = 0`) contienen imágenes de origen. Por esta razón, no se puede cambiar una imagen mediante una solicitud POST con `objectType = 1`.

<div id="example-requests">
  ## Ejemplos de solicitudes
</div>

<div id="load-a-file-from-the-server">
  ### Cargar un archivo desde el servidor
</div>

Para cargar un archivo de página (`objectType = 1`) con `id=4`, `streamName=C:\Temp\image.pdf` y `version=184201843` desde el servidor, use la siguiente solicitud POST:

```text theme={null}
1-4-C:\Temp\image.pdf184201843
```

<div id="save-a-file-on-the-server">
  ### Guardar un archivo en el servidor
</div>

Para guardar un documento (`objectType = 0`) con `id=4`, `projectId=3`, `batchId=6`, `version=522` y `streamName=C:\Temp\image.pdf` en el servidor, utilice la siguiente solicitud POST:

```csharp theme={null}
resp = FileRequest(
    action: "Save",
    objectType: 0,
    projectId: 3,
    batchId: 6,
    objectId: 4,
    version: 522,
    streamName: "C:\Temp\image.pdf",
    file: new ByteArrayContent(buffer, 0, readed),
    clientCredentials: clientCredentials,
    endpointAddress: endpointAddress);
```

Para obtener más información, consulte [Ejemplos](/es/flexi-capture/api/files/examples-api-files).
