当前有两种可用的上传处理程序:UploadHandlerRaw
和 UploadHandlerFile
。
UploadHandlerRaw
类在构造时接受数据缓冲区。当该缓冲区为字节数组时,它将在内部复制到本地代码内存中。当远程服务器准备接收请求正文数据时,UnityWebRequest
系统使用此缓冲区。当将缓冲区提供为 NativeArray
时,不会执行任何复制操作。
UploadHandlerFile
允许你将文件的内容作为请求正文发送。使用此处理程序,你可以向服务器发送一个大文件,而不需要使用大量内存。由于该处理程序从文件中读取数据然后发送,因此在任何给定时间,只有文件的一小部分保存在内存中。
上传处理程序还可以接受内容类型字符串。如果未在 UnityWebRequest 自己的 Content-Type
头中设置任何 Content-Type
头,则该字符串将用作 UnityWebRequest 的 Content-Type
头的值。如果手动在 UnityWebRequest 对象上设置 Content-Type
头,则将忽略上传处理程序对象上的 Content-Type
。
如果未在 UnityWebRequest 或 UploadHandler
上设置 Content-Type
,则系统默认将 Content-Type
设置为 application/octet-stream
。
UnityWebRequest
有一个名为 disposeUploadHandlerOnDispose
的属性,其默认值为真。如果此属性为真,则当 UnityWebRequest 对象被释放,Dispose() 将还会在附加上传处理程序上调用,使其变得无用。如果你保留的上传处理程序引用比 UnityWebRequest 引用长,则应将 disposeUploadHandlerOnDispose 设置为假。
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;