# Unity Web Request Creating Upload Handlers

> Send request body data to a server using the UploadHandlerRaw and UploadHandlerFile upload handlers.

現在使用できるアップロードハンドラーは、`UploadHandlerRaw` と `UploadHandlerFile` の 2 種類です。

`UploadHandlerRaw` クラスは構築時にデータバッファを受け取ります。このバッファがバイト配列の場合、内部的にネイティブコードメモリにコピーされます。リモートサーバーがリクエストボディのデータを受信する準備ができたときに、`UnityWebRequest` システムがこのバッファを使用します。バッファが `NativeArray` として提供される場合、コピーは実行されません。

`UploadHandlerFile` を使用すると、ファイルのコンテンツをリクエストボディとして送信できます。このハンドラーを使用すると、大量のメモリ使用せずに大きなファイルをサーバーに送信できます。ハンドラーがファイルからデータを読み取り、送信するときに、メモリに保持されるのは常にファイルのほんの一部だけです。

Upload Handler は、文字列 Content Type も受け取ります。この文字列は、UnityWebRequest 自体に `Content-Type` ヘッダーを設定しない場合に、UnityWebRequest の `Content-Type` ヘッダーの値として使用されます。UnityWebRequest オブジェクトに `Content-Type` ヘッダーを手動で設定した場合は、Upload Handler オブジェクトの `Content-Type` は無視されます。

UnityWebRequest または `UploadHandler` のいずれかに `Content-Type` を設定しない場合、システムはデフォルトで `application/octet-stream` の `Content-Type` を設定します。

`UnityWebRequest` には `disposeUploadHandlerOnDispose` というプロパティがあり、デフォルトは true です。このプロパティが true の場合、UnityWebRequest オブジェクトが破棄されると、アタッチされている Upload Handler でも Dispose() が呼び出され、オブジェクトが使用できなくなります。Upload Handler への参照を UnityWebRequest へのリファレンスよりも長く保持する場合は、disposeUploadHandlerOnDispose を false に設定する必要があります。

## 例

```
byte[] payload = new byte[1024];
// ... fill payload with data ...

UnityWebRequest wr = new UnityWebRequest("https://www.mysite.com/data-upload");
UploadHandler uploader = new UploadHandlerRaw(payload);

// Sends header: "Content-Type: custom/content-type";
uploader.contentType = "custom/content-type";

wr.uploadHandler = uploader;
```
