暴风云视频平台SDK使用介绍(五)-- 文件上传(进阶)

暴风云视频平台SDK使用介绍(二) 里,我们简单介绍了如何使用C# SDK上传文件。上文介绍的方法,虽然很简单,但也存在一些问题,比如
1. 不能断点续传,如果中途断开,下次还得继续从头上传。
2. 传输中途不能结束,没有进度提示。
3. 上传过程是同步的,会阻塞调用线程直到上传结束。
4. 文件上传到服务器后还需要经过后续的处理,比如转码等工作,如何收到完成通知?

所有以上问题,都将在下面进行介绍。

使用Upload2上传

在前文里,我们使用的是 Baofeng.Cloud.Upload 类进行上传。从现在起,我们将使用 Baofeng.Cloud.Upload2 类。


首先,你需要先创建一个Upload2实例。
  1. Upload2 upload = new Upload2();
复制代码

然后,设置上传进度事件处理函数
  1. upload.UploadProgressChanged += new Baofeng.Cloud.Upload2.UploadProgressChangedEventHandler(delegate(Object sender, Baofeng.Cloud.Upload2.UploadProgressChangedEventArgs e) {

  2.                 //这里就可以显示进度了

  3.                 //Int64 percent = e.BytesSent * 100 / e.TotalBytesToSend;

  4.             });
复制代码


设置上传结束事件处理函数
  1. upload.UploadCompleted += new Baofeng.Cloud.Upload2.UploadCompletedEventHandler(delegate(Object sender,               Baofeng.Cloud.Upload2.UploadCompletedEventArgs e) {
  2.                 if(e.Cancelled)
  3.                      //上传被主动取消了
  4.                 else if (e.Error != null)
  5.                     //上传出错了
  6.                 else
  7.                     //上传成功了
  8.             });
复制代码


当准备工作完成之后,你就可以调用UploadFileAsync方法开始上传文件了。
  1. upload.UploadFileAsync(profile, servieType, fileType, localFilePath, fileName, fileKey, callbackUrl);
复制代码

注意,这是一个异步调用,即UploadFileAsync会立即返回而不等上传结束。上传结束的时候,会有上传结束通知,如前所述。



因为是异步调用,所以不会阻塞调用线程。你可以同时创建多个Upload2实例,同时进行多个文件的上传。但是,每个实例只能上传一个文件!


如果中途想结束上传,可以调用Cancel函数。

  1. upload.Cancel();
复制代码

取消成功之后,也会收到上传结束通知。

如果没有上传成功,想要再次上传的话,只要重复以上流程即可, Upload2内部会自动接着上次中断的位置继续上传。


服务端通知

前面不管是Upload还是Upload2,所谓的上传结束都是指本地文件上传到服务器完成,并不代表服务器端处理完成。

在服务端处理完成之前,已上传的文件是不能被使用的。因此,你需要及时了解服务端的处理进度。

要做到这点,有两个办法:

1.  定时查询

SDK里提供了查询接口,可以查询文件的状态。

2. 等待服务端通知

如果在上传时指定了CallbackUrl,那么在服务端处理完成之后,就会主动访问这个Url进行通知。

在前面,我们都把CallbackUrl设置为空。现在,你只要设置成你的服务器地址,就可以及时收到服务器处理完成通知了!

回调通知的具体格式请参考API文档“接收上传回调”一节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值