> ## 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.

# Utilisation des fichiers

> Échangez des fichiers avec le serveur d’applications ABBYY FlexiCapture à l’aide de requêtes POST : charger, enregistrer, ajouter et calculer la somme de contrôle d’images, de pièces jointes et de données XML.

Pour échanger des fichiers avec le serveur d’applications, utilisez une requête POST.

Avant d’envoyer des requêtes de fichiers, connectez-vous à l’API Web Services. Pour plus d’informations, consultez [Connexion à l’API Web Services](/fr/flexi-capture/api/using/connecting).

<div id="types-of-actions">
  ## Types d'actions
</div>

Utilisez des requêtes POST pour effectuer les actions suivantes :

| Valeur de l'action | Description                                                                                                               |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `Load`             | Charger des fichiers à partir du serveur.                                                                                 |
| `Save`             | Enregistrer des fichiers sur le serveur.                                                                                  |
| `Append`           | Ajouter des données à la fin d'un fichier.                                                                                |
| `Checksum`         | Obtenir la somme de contrôle d'un fichier sur le serveur. La somme de contrôle est calculée à l'aide de la méthode CRC32. |

<div id="common-use-cases">
  ## Cas d’utilisation courants
</div>

* Importer des images : charger des fichiers image, y compris en plusieurs parties, et obtenir leur somme de contrôle.
* Obtenir à tout moment du traitement les images des pages d’origine.
* Travailler avec les pièces jointes des lots, des documents et des pages (téléversement et téléchargement).
* Obtenir la description XML d’une tâche de vérification, modifier le document et enregistrer les modifications sur le serveur.

<Info>
  Pour les pièces jointes volumineuses, utilisez des requêtes POST. Les fichiers volumineux sont divisés en parties plus petites et téléversés vers le serveur. Lorsque vous utilisez une requête POST pour ajouter une pièce jointe à un objet, appelez la méthode [SaveAttachment](/fr/flexi-capture/api/methods/save-attachment) après la requête POST, en passant un fichier de longueur nulle portant le nom du fichier transféré comme paramètre `file`. Dans les autres cas, utilisez les méthodes [Pièces jointes](/fr/flexi-capture/api/methods/attachments), spécialement conçues pour les pièces jointes.
</Info>

<div id="request-parameters">
  ## Paramètres de la requête
</div>

<Note>
  Assurez-vous que les champs de la requête sont correctement renseignés.
</Note>

| Nom          | Type   | Description                                                                                                                       |
| ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `Action`     | string | Type d’action. Pour plus d’informations, voir [Types d’actions](#types-of-actions).                                               |
| `sessionId`  | int    | ID de la session, utilisé pour vérifier les autorisations de l’utilisateur.                                                       |
| `projectId`  | int    | ID du projet.                                                                                                                     |
| `batchId`    | int    | ID du lot.                                                                                                                        |
| `objectType` | int    | Type d’objet sur le serveur. Pour plus d’informations, voir [Types d’objet](#object-types).                                       |
| `objectId`   | int    | ID de l’objet (d’un document, d’une page ou d’une tâche).                                                                         |
| `parentId`   | int    | ID du document parent. Indiquez-le pour les jeux de documents ; pour les documents qui ne font pas partie d’un jeu, utilisez `0`. |
| `version`    | int    | Version du fichier.                                                                                                               |
| `streamName` | string | Nom du flux binaire encodé. Pour plus d’informations, voir [Noms de flux](#stream-names).                                         |
| `blob`       | —      | Données de fichier binaires (lorsque `Action` est `Save` ou `Append`).                                                            |
| `offset`     | int    | Décalage à partir du début du fichier, après lequel ajouter les données (lorsque `Action` est `Append`).                          |

<div id="object-types">
  ### Types d’objet
</div>

Le paramètre `objectType` accepte les valeurs suivantes :

| Valeur | Type d’objet                                                                               |
| ------ | ------------------------------------------------------------------------------------------ |
| `0`    | Document                                                                                   |
| `1`    | Page                                                                                       |
| `5`    | Petite copie de la page affichée sous forme de vignette (fichier PNG)                      |
| `8`    | Pièce jointe de tâche (document XML)                                                       |
| `13`   | Fichier accessible à tous les utilisateurs, tel qu’un contrat de licence utilisateur final |

<Info>
  Le type d’objet `8` (pièce jointe de tâche) est particulièrement adapté aux pièces jointes volumineuses. Dans les autres cas, utilisez les méthodes [Pièces jointes](/fr/flexi-capture/api/methods/attachments), spécialement conçues pour les pièces jointes.
</Info>

<Note>
  Pour les fichiers de type d’objet `13`, définissez `projectId` sur `0` et `batchId` sur `0` — ces fichiers n’appartiennent à aucun projet, lot ou tenant. Pour écrire un fichier de ce type, l’administrateur doit ouvrir une session. Pour lire un fichier de ce type, indiquez `sessionId=0` ; il n’est pas nécessaire d’ouvrir une session.
</Note>

<div id="stream-names">
  ### Noms de flux
</div>

Le paramètre `streamName` correspond au nom du flux binaire. Utilisez l’encodage Base64 lors de l’enregistrement d’un fichier sur le serveur, et l’encodage UrlEncode lors du chargement d’un fichier depuis le serveur. Les valeurs disponibles dépendent du type d’objet.

<div id="page-stream-names">
  #### Noms des flux de page
</div>

| Valeur            | Description                                        |
| ----------------- | -------------------------------------------------- |
| `BlackWhiteImage` | L’image en noir et blanc de la page (fichier PNG). |
| `ColorImage`      | L’image en couleur de la page (fichier JPG).       |
| `Preview`         | L’aperçu de l’image de la page (fichier PNG).      |

<div id="document-stream-names">
  #### Noms des flux de document
</div>

| Valeur            | Description                                                                                                                                                                                                                                                                                                                                               |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DocumentBody`    | Document XML décrivant les champs du document. Créé lors de la préparation de la tâche pour les stations Web. Après la vérification, les modifications apportées au document sont traitées. Les versions ne sont pas prises en charge ; définissez le paramètre `version` sur `0`. Enregistrez les résultats du traitement des documents dans ce fichier. |
| `Page` `pageID`   | `pageID` est l’ID d’une page renvoyée par la méthode [AddNewPage](/fr/flexi-capture/api/methods/add-new-page). Utilisez ce nom de flux pour téléverser l’image d’une page source avant le prétraitement.                                                                                                                                                  |
| `FileName`        | `FileName` est le nom d’un fichier spécifié lors de la création du document avec la méthode [AddNewDocument](/fr/flexi-capture/api/methods/add-new-document). Utilisez ce nom de flux pour téléverser un fichier multipage contenant des images de pages du document.                                                                                     |
| `RecognizedWords` | Document XML contenant les mots reconnus et leurs coordonnées sur la page.                                                                                                                                                                                                                                                                                |

<div id="task-stream-names">
  #### Noms des flux de tâches
</div>

* `Verification` — Un document XML qui décrit une tâche de vérification. Il est créé lors de la préparation de la tâche pour les stations Web. Après la vérification, les modifications apportées au document sont traitées. Les versions ne sont pas prises en charge ; définissez le paramètre `version` sur `1`. Enregistrez les résultats du traitement de la tâche dans ce fichier.
* `VerificationRequest` — Correspond à l’une des requêtes suivantes :
  * Un document XML qui contient une requête visant à exécuter des opérations dans un lot, y compris la séparation des documents et la réorganisation des pages. Ce type de requête est utilisé par la station Web pour la vérification des règles.
  * Un document XML contenant une requête de routage.
  * Un document XML contenant une requête d’extrapolation de `LineItems`.
  * Un document XML contenant une requête de vérification des données.

<div id="file-storage">
  ## Stockage de fichiers
</div>

Le stockage de fichiers contient l’ensemble des fichiers du projet. Le nom du fichier encode le type d’objet, l’identifiant de l’objet et le nom du flux sous la forme `<object type>-<object id>-<stream name>version`.

Les fichiers de page (`objectType = 1`) contiennent des copies d’images, tandis que les fichiers de document (`objectType = 0`) contiennent les images source. Pour cette raison, vous ne pouvez pas modifier une image au moyen d’une requête POST avec `objectType = 1`.

<div id="example-requests">
  ## Exemples de requêtes
</div>

<div id="load-a-file-from-the-server">
  ### Chargement d’un fichier depuis le serveur
</div>

Pour charger un fichier de page (`objectType = 1`) ayant `id=4`, `streamName=C:\Temp\image.pdf` et `version=184201843` depuis le serveur, utilisez la requête POST suivante :

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

<div id="save-a-file-on-the-server">
  ### Enregistrer un fichier sur le serveur
</div>

Pour enregistrer un document (`objectType = 0`) avec `id=4`, `projectId=3`, `batchId=6`, `version=522` et `streamName=C:\Temp\image.pdf` sur le serveur, utilisez la requête POST suivante :

```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);
```

Pour plus d’informations, consultez [Examples](/fr/flexi-capture/api/files/examples-api-files).
