# Unity Web Request Creating Upload Handlers

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

현재 사용 가능한 업로드 핸들러 유형은 `UploadHandlerRaw` 및 `UploadHandlerFile`의 두 가지입니다.

`UploadHandlerRaw` 클래스는 구성 시점에 데이터 버퍼를 받습니다. 이 버퍼가 바이트 배열이면 내부적으로 네이티브 코드 메모리에 복사됩니다. 원격 서버가 요청 본문 데이터를 받을 준비가 되면 `UnityWebRequest` 시스템이 이 버퍼를 사용합니다. 버퍼를 `NativeArray`로 제공하면 복제가 수행되지 않습니다.

`UploadHandlerFile`을 사용하면 파일의 내용을 요청 본문으로 전송할 수 있습니다. 이 핸들러를 사용하면 많은 메모리를 사용하지 않고도 서버로 큰 파일을 보낼 수 있습니다. 핸들러가 파일에서 데이터를 읽은 다음 전송하므로 파일의 일부만 메모리에 유지됩니다.

업로드 핸들러도 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`에는 기본값이 true인 프로퍼티 `disposeUploadHandlerOnDispose`가 있습니다. 이 프로퍼티가 true일 경우 UnityWebRequest 오브젝트가 제거되면 연결된 업로드 핸들러에서도 Dispose()가 호출되어 렌더링할 이유가 없어집니다. 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;
```
