ドキュメント

Unity Engine

Unity Engine

Unity Web Request Creating Upload Handlers

Send request body data to a server using the UploadHandlerRaw and UploadHandlerFile upload handlers.
読み終わるまでの所要時間 3 分最終更新 1ヶ月前

現在使用できるアップロードハンドラーは、
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;