在
《暴风云视频平台SDK使用介绍(二)》
里,我们简单介绍了如何使用C# SDK上传文件。上文介绍的方法,虽然很简单,但也存在一些问题,比如
1. 不能断点续传,如果中途断开,下次还得继续从头上传。
2. 传输中途不能结束,没有进度提示。
3. 上传过程是同步的,会阻塞调用线程直到上传结束。
4. 文件上传到服务器后还需要经过后续的处理,比如转码等工作,如何收到完成通知?
所有以上问题,都将在下面进行介绍。
使用Upload2上传
在前文里,我们使用的是 Baofeng.Cloud.Upload 类进行上传。从现在起,我们将使用 Baofeng.Cloud.Upload2 类。
首先,你需要先创建一个Upload2实例。
然后,设置上传进度事件处理函数
设置上传结束事件处理函数
当准备工作完成之后,你就可以调用UploadFileAsync方法开始上传文件了。
注意,这是一个异步调用,即UploadFileAsync会立即返回而不等上传结束。上传结束的时候,会有上传结束通知,如前所述。
因为是异步调用,所以不会阻塞调用线程。你可以同时创建多个Upload2实例,同时进行多个文件的上传。但是,每个实例只能上传一个文件!
如果中途想结束上传,可以调用Cancel函数。
取消成功之后,也会收到上传结束通知。
如果没有上传成功,想要再次上传的话,只要重复以上流程即可, Upload2内部会自动接着上次中断的位置继续上传。
服务端通知
前面不管是Upload还是Upload2,所谓的上传结束都是指本地文件上传到服务器完成,并不代表服务器端处理完成。
在服务端处理完成之前,已上传的文件是不能被使用的。因此,你需要及时了解服务端的处理进度。
要做到这点,有两个办法:
1. 定时查询
SDK里提供了查询接口,可以查询文件的状态。
2. 等待服务端通知
如果在上传时指定了CallbackUrl,那么在服务端处理完成之后,就会主动访问这个Url进行通知。
在前面,我们都把CallbackUrl设置为空。现在,你只要设置成你的服务器地址,就可以及时收到服务器处理完成通知了!
回调通知的具体格式请参考API文档“接收上传回调”一节
1. 不能断点续传,如果中途断开,下次还得继续从头上传。
2. 传输中途不能结束,没有进度提示。
3. 上传过程是同步的,会阻塞调用线程直到上传结束。
4. 文件上传到服务器后还需要经过后续的处理,比如转码等工作,如何收到完成通知?
所有以上问题,都将在下面进行介绍。
使用Upload2上传
在前文里,我们使用的是 Baofeng.Cloud.Upload 类进行上传。从现在起,我们将使用 Baofeng.Cloud.Upload2 类。
首先,你需要先创建一个Upload2实例。
然后,设置上传进度事件处理函数
设置上传结束事件处理函数
当准备工作完成之后,你就可以调用UploadFileAsync方法开始上传文件了。
注意,这是一个异步调用,即UploadFileAsync会立即返回而不等上传结束。上传结束的时候,会有上传结束通知,如前所述。
因为是异步调用,所以不会阻塞调用线程。你可以同时创建多个Upload2实例,同时进行多个文件的上传。但是,每个实例只能上传一个文件!
如果中途想结束上传,可以调用Cancel函数。
取消成功之后,也会收到上传结束通知。
如果没有上传成功,想要再次上传的话,只要重复以上流程即可, Upload2内部会自动接着上次中断的位置继续上传。
服务端通知
前面不管是Upload还是Upload2,所谓的上传结束都是指本地文件上传到服务器完成,并不代表服务器端处理完成。
在服务端处理完成之前,已上传的文件是不能被使用的。因此,你需要及时了解服务端的处理进度。
要做到这点,有两个办法:
1. 定时查询
SDK里提供了查询接口,可以查询文件的状态。
2. 等待服务端通知
如果在上传时指定了CallbackUrl,那么在服务端处理完成之后,就会主动访问这个Url进行通知。
在前面,我们都把CallbackUrl设置为空。现在,你只要设置成你的服务器地址,就可以及时收到服务器处理完成通知了!
回调通知的具体格式请参考API文档“接收上传回调”一节