UN4L7——WWWFrom类

WWWFrom

上节课学习了使用WWW​类来下载数据,如果想要使用WWW上传数据时,就需要配合WWWFrom​类进行使用了
WWWFrom​主要就是用于集成数据的,我们可以设置上传的参数或者2进制数据
当结合WWWFrom​上传数据时,它主要用到的请求类型是Post​,它使用Http协议进行上传处理

注意:使用WWW​结合WWWFrom​上传数据一般需要配合后端程序制定上传规则

WWW​结合WWWFrom​上传数据,需要配合后端服务器来指定上传规则
也就是说我们上传的数据,后端需要知道收到数据后应该如何处理
通过这种方式我们没办法像C#类当中完成文件的上传,但是该方式非常适合用于制作短连接游戏的前端网络层
我们可以对WWW​进行二次封装,专门用于上传自定义消息给对应的Web服务器

WWWFrom类的常用方法和变量

该类当中我们主要就使用方法,相关变量很少使用,我们主要就着重讲解方法

  1. WWWForm()​:构造函数

    1
    WWWForm data = new WWWForm();
  2. AddBinaryData()​:添加二进制数据

    • 参数一:字段名
    • 参数二:要上传的字节数组
    • 参数三:上传到服务器后该二进制数据的文件名(可选)
    • 参数四:媒体类型(可选,相当于Http的ContentType)
    1
    2
    3
    4
    data.AddBinaryData("file", 
    File.ReadAllBytes(Application.streamingAssetsPath + "/test.png"),
    "WWWUpLoad.png",
    "application/octet-stream");
  3. AddField()​:添加字段

    可以在上传消息时接受一些参数的值

    • 参数一:字段名
    • 参数二:字段名对应的值(string​或者int​)
    • 参数三:如果值是string​,则字符编码是什么(可选)
    1
    2
    data.AddField("Name", "MrTang", Encoding.UTF8);
    data.AddField("Age", 99);

利用WWW类和WWWFrom类来异步上传文件

注意,由该方法上传的数据必须要有服务端的后端程序员配合才能让传输的数据可用,否则服务器接收到了数据后也不能处理

利用WWW​类和WWWFrom​类来异步上传文件非常简单
只需要在实例化WWW​对象前实例化一个WWWForm​对象,向该对象添加字段(参数),添加二进制数据(要传输的内容)

然后在实例化WWW​对象时传入该WWWForm​对象,路径为文件要上传到服务器的哪个位置上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Start()
{
StartCoroutine(UploadData());
}

IEnumerator UploadData()
{
WWWForm data = new WWWForm();
data.AddField("Name", "MrTang", Encoding.UTF8);
data.AddField("Age", 99);
data.AddBinaryData("file", File.ReadAllBytes(Application.streamingAssetsPath + "/test.png"), "WWWUpLoad.png", "application/octet-stream");

WWW www = new WWW("http://192.168.1.106/Http_Server/", data);
yield return www;
if (www.error == null)
{
print("上传成功!");
}
else
print("上传失败:" + www.error);
}