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

# サーバーにファイルをアップロードする

> PUT または POST リクエスト、MD5 ハッシュ検証、multipart のサポートにより、Mobile API 経由で ABBYY FlexiCapture サーバーに画像をアップロードします。

サーバーにファイルをアップロードするには、PUT または POST リクエストを使用します。

<div id="create-a-put-request">
  ## PUT リクエストを作成する
</div>

PUT リクエストでファイルをアップロードするには、次の URI を指定します。

```http theme={null}
https://localhost/flexicapture12/server/MobileApp?filename=[file name]&projectName=[project name]&batchType=[batch name]
```

URI は次のパラメーターを受け取ります。

| Parameter     | Description                                   |
| ------------- | --------------------------------------------- |
| `projectName` | project の名前です。必須です。                           |
| `batchType`   | バッチの名前です。必須です。値が指定されていない場合は、既定のバッチタイプが使用されます。 |
| `filename`    | アップロードするファイルの名前です。必須です。                       |

`Content-Type` ヘッダーフィールドの値を明示的に指定することをお勧めします。アップロードするファイルは、PUT リクエストの body で指定します。

サーバーはハッシュコードをサポートしています。MD5 ハッシュ関数の値を FlexiCapture 12 サーバーに渡します。この値を UTF-16LE を使用して Base64 でエンコードし、標準の `Content-MD5` ヘッダーで渡します。サーバーはファイルのハッシュ関数の値を計算し、ヘッダーで渡された値と比較します。値が一致しない場合、ファイルはサーバー上で削除されます。

サーバーから返されるレスポンスは 2 種類あります。

* **HTTP 201 (Created)** – ファイルは正常にサーバーにアップロードされました。
* **HTTP 400 (Bad request)** – 必須パラメーターが不足しているか、ハッシュ関数の値がヘッダーで指定された値と一致していません。ファイルはアップロードされませんでした。

<Note>
  現時点では、登録パラメーターをサーバーに渡すことはできません。
</Note>

<div id="create-a-post-request">
  ## POST リクエストの作成
</div>

PUT リクエストの使用を推奨します。何らかの理由で PUT リクエストを使用できない場合は、POST リクエストを使用してサーバーにファイルをアップロードできます。`projectName` パラメーターと `batchType` パラメーターは、PUT リクエストの場合と同様に URL で渡すことも、リクエスト本文内のテキストの field として渡すこともできます。

<div id="pass-multiple-images-in-one-request">
  ### 1 つのリクエストで複数の画像を渡す
</div>

1 つの POST リクエストで複数の画像を渡すことができます。Content-Type ヘッダーフィールドの値を `multipart/form-data` に設定し、`boundary` パラメーターで separator の値を指定します。リクエストに含まれるファイル名は同一であってはなりません。

次の例では、1 つのリクエストで 2 つのファイルを渡しています。

```http theme={null}
Content-type: multipart/form-data; boundary=<random string>
--<boundary value>
Content-Disposition: form-data; name=<field name>; filename=<name of file 1><crlf>
Content-MD5: <value of MD5 hash for file><crlf>
<crlf>
<file data>
--<boundary value>
Content-Disposition: form-data; name=<field name>; filename=<name of file 2><crlf>
<crlf>
<file data>
```

<div id="pass-a-text-field">
  ### テキストの field を渡す
</div>

POST リクエストでテキストの field を渡すこともできます:

```http theme={null}
--<boundary value>
Content-Disposition: form-data; name="<field name>"<crlf>
<crlf>
<field value><crlf>
```

次の boundary 文字列でリクエストを終了します:

```http theme={null}
--<boundary value>--<crlf><crlf>
```
