版本:Unity 6 (6000.0)
语言:英语
创建 UnityWebRequest
创建 DownloadHandler

创建 UploadHandler

当前有两种可用的上传处理程序:UploadHandlerRawUploadHandlerFile

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;
创建 UnityWebRequest
创建 DownloadHandler