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

# ファイルの操作

> POST リクエストを使用して ABBYY FlexiCapture Application Server とファイルをやり取りします。画像、添付ファイル、XML データのロード、保存、追加、チェックサム計算を行います。

Application Server とファイルをやり取りするには、POST リクエストを使用します。

ファイル リクエストを送信する前に、Web Services API に接続します。詳細については、[Web Services API への接続](/ja/flexi-capture/api/using/connecting)を参照してください。

<div id="types-of-actions">
  ## アクションの種類
</div>

次のアクションを実行するには、POST リクエストを使用します。

| アクション値     | 説明                                               |
| ---------- | ------------------------------------------------ |
| `Load`     | サーバーからファイルをロードします。                               |
| `Save`     | サーバー上にファイルを保存します。                                |
| `Append`   | ファイルの末尾にデータを追加します。                               |
| `Checksum` | サーバーからファイルのチェックサムを取得します。チェックサムは CRC32 方式で計算されます。 |

<div id="common-use-cases">
  ## 一般的なユースケース
</div>

* 画像をインポートします。画像ファイルを分割された状態でもロードし、そのチェックサムを取得します。
* 処理中の任意の時点で元のページ画像を取得します。
* バッチ、ドキュメント、ページの添付ファイルを操作します (アップロードとダウンロード) 。
* 検証タスクの XML 記述を取得し、ドキュメントを変更して、変更内容をサーバーに保存します。

<Info>
  大きな添付ファイルには、POST リクエストを使用します。大きなファイルは小さな部分に分割され、サーバーにアップロードされます。POST リクエストを使用して object に添付ファイルを追加する場合は、POST リクエストの後に [SaveAttachment](/ja/flexi-capture/api/methods/save-attachment) メソッドを呼び出し、転送したファイル名を `file` パラメーターに指定した長さ 0 のファイルを渡してください。それ以外の場合は、添付ファイル専用に用意された [Attachments](/ja/flexi-capture/api/methods/attachments) メソッドを使用してください。
</Info>

<div id="request-parameters">
  ## リクエスト パラメーター
</div>

<Note>
  リクエストの各フィールドが正しく設定されていることを確認してください。
</Note>

| 名前           | 型      | 説明                                                               |
| ------------ | ------ | ---------------------------------------------------------------- |
| `Action`     | string | アクションの種類。詳しくは、[アクションの種類](#types-of-actions)を参照してください。            |
| `sessionId`  | int    | セッション ID。ユーザーの権限を確認するために使用します。                                   |
| `projectId`  | int    | project ID。                                                      |
| `batchId`    | int    | バッチ ID。                                                          |
| `objectType` | int    | サーバー上のオブジェクトの型。詳しくは、[型](#object-types)を参照してください。                 |
| `objectId`   | int    | オブジェクト ID (ドキュメント、ページ、またはタスク) 。                                  |
| `parentId`   | int    | 親ドキュメントの ID。ドキュメント セットの場合はこれを指定し、セットに含まれないドキュメントの場合は `0` を使用します。 |
| `version`    | int    | ファイルのバージョン。                                                      |
| `streamName` | string | エンコードされたバイナリ ストリームの名前。詳しくは、[ストリーム名](#stream-names)を参照してください。     |
| `blob`       | —      | バイナリ ファイル データ (`Action` が `Save` または `Append` の場合) 。             |
| `offset`     | int    | データを追加する位置を示す、ファイル先頭からのオフセット (`Action` が `Append` の場合) 。         |

<div id="object-types">
  ### 型
</div>

`objectType` パラメーターでは、次の値を指定できます。

| Value | 型                                     |
| ----- | ------------------------------------- |
| `0`   | ドキュメント                                |
| `1`   | ページ                                   |
| `5`   | サムネイルとして表示されるページの縮小版 (PNG ファイル)       |
| `8`   | タスク添付ファイル (XML ドキュメント)                |
| `13`  | エンドユーザー使用許諾契約書など、すべてのユーザーがアクセスできるファイル |

<Info>
  型 `8` (タスク添付ファイル) は、大容量の添付ファイルに最適です。それ以外の場合は、添付ファイル専用の [Attachments](/ja/flexi-capture/api/methods/attachments) メソッドを使用してください。
</Info>

<Note>
  型 `13` のファイルでは、`projectId` と `batchId` をどちらも `0` に設定します。これらのファイルは、どのプロジェクト、バッチ、テナントにも属しません。この型のファイルを書き込むには、管理者がセッションを開始する必要があります。この型のファイルを読み取る場合は、`sessionId=0` を渡してください。セッションを開始する必要はありません。
</Note>

<div id="stream-names">
  ### ストリーム名
</div>

`streamName` Parameter は、バイナリストリームの名前です。ファイルをサーバーに保存する場合は Base64 エンコードを使用し、サーバーからファイルをロードする場合は UrlEncode エンコードを使用します。使用できる値は、オブジェクトの型によって異なります。

<div id="page-stream-names">
  #### ページストリーム名
</div>

| 値                 | 説明                      |
| ----------------- | ----------------------- |
| `BlackWhiteImage` | ページの白黒画像 (PNGファイル) 。    |
| `ColorImage`      | ページのカラー画像 (JPGファイル) 。   |
| `Preview`         | ページのプレビュー画像 (PNGファイル) 。 |

<div id="document-stream-names">
  #### Document ストリーム名
</div>

| 値                 | 説明                                                                                                                                                       |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DocumentBody`    | 文書のfieldを記述した XML 文書です。Web Station 用にタスクを準備する際に作成されます。検証後、文書への変更が処理されます。バージョンはサポートされていないため、`version` パラメーターは `0` に設定してください。文書処理結果はこのファイルに保存します。          |
| `Page` `pageID`   | `pageID` は、[AddNewPage](/ja/flexi-capture/api/methods/add-new-page) メソッドから返されるページの ID です。前処理前にソースページ画像をアップロードするには、このストリーム名を使用します。                        |
| `FileName`        | `FileName` は、[AddNewDocument](/ja/flexi-capture/api/methods/add-new-document) メソッドで文書を作成するときに指定するファイル名です。文書ページ画像を含むマルチページファイルをアップロードするには、このストリーム名を使用します。 |
| `RecognizedWords` | 認識済みの単語と、そのページ上の座標を含む XML 文書です。                                                                                                                          |

<div id="task-stream-names">
  #### タスクストリーム名
</div>

* `Verification` — 検証タスクを記述する XML ドキュメントです。タスクを Web Station 用に準備する際に作成されます。検証後、ドキュメント内の変更が処理されます。バージョンはサポートされていないため、`version` パラメーターを `1` に設定してください。タスクの処理結果はこのファイルに保存します。
* `VerificationRequest` — 次のいずれかのリクエストに対応します。
  * 文書分割やページの並べ替えを含む、バッチ内で操作を実行するためのリクエストを含む XML ドキュメントです。この種のリクエストは、ルールチェックのために Web Station で使用されます。
  * ルーティングリクエストを含む XML ドキュメントです。
  * `LineItems` の外挿リクエストを含む XML ドキュメントです。
  * データ検証リクエストを含む XML ドキュメントです。

<div id="file-storage">
  ## ファイルストレージ
</div>

ファイルストレージには、プロジェクト内のすべてのファイルが格納されます。ファイル名には、`<object type>-<object id>-<stream name>version` の形式で、型、オブジェクト識別子、およびストリーム名が埋め込まれています。

ページファイル (`objectType = 1`) には画像のコピーが含まれ、ドキュメントファイル (`objectType = 0`) には元の画像が含まれます。そのため、`objectType = 1` を指定した POST リクエスト では画像を変更できません。

<div id="example-requests">
  ## リクエスト例
</div>

<div id="load-a-file-from-the-server">
  ### サーバーからファイルをロードする
</div>

`id=4`、`streamName=C:\Temp\image.pdf`、`version=184201843` のページファイル (`objectType = 1`) をサーバーからロードするには、次の POST リクエストを使用します。

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

<div id="save-a-file-on-the-server">
  ### サーバーにファイルを保存する
</div>

`id=4`、`projectId=3`、`batchId=6`、`version=522`、`streamName=C:\Temp\image.pdf` のドキュメント (`objectType = 0`) をサーバーに保存するには、次の 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);
```

詳しくは、[Examples](/ja/flexi-capture/api/files/examples-api-files)を参照してください。
