Currently, there are two types of upload handlers available: UploadHandlerRaw
and UploadHandlerFile
.
UploadHandlerRaw
class accepts a data buffer at construction time. When this buffer is an array of bytes, it’s copied internally into native code memory. UnityWebRequest
system uses this buffer when the remote server is ready to receive the request body data. When the buffer is provided as a NativeArray
, no copying is performed.
UploadHandlerFile
allows you to send the contents of a file as the request body. Using this handler, you can send a large file to a server without using a lot of memory. As the handler reads data from the file and then sends it, only a small fraction of the file is kept in memory at any given time.
Upload Handlers also accept a Content Type string. This string is used for the value of the UnityWebRequest’s Content-Type
header if you set no Content-Type
header on the UnityWebRequest itself. If you manually set a Content-Type
header on the UnityWebRequest object, the Content-Type
on the Upload Handler object is ignored.
If you do not set a Content-Type
on either the UnityWebRequest or the UploadHandler
, the system defaults to setting a Content-Type
of application/octet-stream
.
UnityWebRequest
has a property disposeUploadHandlerOnDispose
, which defaults to true. If this property is true, when UnityWebRequest object is disposed, Dispose() will also be called on attached upload handler rendering it useless. If you keep a reference to upload handler longer than the reference to UnityWebRequest, you should set disposeUploadHandlerOnDispose to 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;
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.