在 《暴风云视频平台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文档“接收上传回调”一节

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

  1. 暴风云视频平台SDK使用介绍(四)-- 视频播放(Android)

    在<暴风云视频平台SDK使用介绍(三)-- 视频播放(IOS)>中,介绍了如何使用IOS平台的播放SDK快速构建一个APP,实现视频点播的功能.在本篇中,我们来看看使用暴风云视频提供的An ...

  2. 暴风云视频平台SDK使用介绍(二)-- 文件上传

    在 上一篇文章 里,我们对暴风云视频平台进行了简要概述.下面这篇文章里,我们将基于C# SDK来介绍文件的上传. 文件上传 注册帐号 如果还没有注册暴风云视频账号,先去免费注册一个. 下载SDK 访问 ...

  3. 暴风云视频平台SDK使用介绍(一)-- 概述

    暴风影音推出了自己的 云视频平台 ,提供了视频存贮,转码以及播放等服务,你可以借助这个平台创建自己的视频应用. 我们将通过一系列文章对此进行介绍 概述 文件上传 网页播放 手机播放 概述 为什么要使用 ...

  4. 暴风云视频平台点播SDK使用介绍(三)-- 视频播放(IOS)

    本教程介绍使用暴风云视频 IOS平台 播放器的SDK,快速构建一个视频点播功能的APP. 下载SDK 访问暴风云视频平台官方网站的SDK页面,进入一站式视频点播,找到SDK for Objective ...

  5. html 文件上传_某平台存在多处任意文件上传

    文章来源: EDI安全 01 漏洞标题 某平台存在多处任意文件上传 02 漏洞类型 文件上传 03 漏洞等级 中危 04 漏洞地址 http://xxxx.xxxxx.com/er.app.xxxx/ ...

  6. 054 webshell介绍与文件上传漏洞

    文章目录 本来想把关于大马.小马.菜刀,蚁剑,upload-labs(部分实验)等小型实验展示单独出一章节内容,后来想想还是整合在一起吧.所以说这一章节的内容会 ¥¥¥有点多¥¥¥ 一:漏洞概述 二: ...

  7. 【PDF转换电子书】云展网教程 | 如何制作PDF文件上传云展网?

    云展网仅支持PDF文件上传,但是没有PDF文件怎么办呢?以下推荐几种制作PDF文件的方法: 方法一:图片转换为PDF文件 有图片文件,可以把图片文件转换为PDF文件. 方法二:使用专业PDF制作工具制 ...

  8. node.js中multiparty模块的介绍和文件上传测试

    第一部分: multiparty模块是一个基于node.js的文件上传模块,模块中的方法和事件以及属性的介绍如下. 属性选项说明: encoding:设置输入表单字段的编码,默认为utf8. maxF ...

  9. SpringBoot整合腾讯云COS对象存储实现文件上传

    企业级项目开发中都会有文件.图片.视频等文件上传并能够访问的场景,对于初学者Demo可能会直接存储在应用服务器上:对于传统项目可能会单独搭建FastDFS.MinIO等文件服务来实现存储,这种方案可能 ...

最新文章

  1. php 保存 json,保存PHP中的Array,是用JSON, serialize还是var_export?
  2. java+hadoop配置参数_将Hadoop参数传递给Java代码
  3. c语言二级考试程序设计题难吗,计算机二级考试:题库抽的不是题是“命”!附赠考试通关全攻略!...
  4. 重庆一银行发生火灾 浓烟直往外窜
  5. python的图表库_python 图表库
  6. AddMvc 和 AddMvcCore 的区别
  7. php的web能力,web 性能的几个概念。
  8. java当前4中引用_Java的四种引用
  9. 【Pytorch神经网络基础理论篇】 04 线性代数
  10. Oracle数据库迁移:异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7
  11. XP系统桌面图标透明问题的解决办法
  12. 企业中个别机械类制图软件无法打印的问题汇总
  13. Android给scrollView截图超过屏幕大小形成长图
  14. Java代码生成器简介、原理、开发流程和Demo
  15. PPT镂空字体、填充文字、图片字、拆分字制作
  16. 云南昆明美容美发店务管理软件
  17. Word宏的利用学习
  18. 步态识别技术与ReID技术
  19. 电脑使用变慢七大原因全解析
  20. Learning through Auxiliary Tasks——辅助任务学习or自监督学习中的pretext

热门文章

  1. process.env.NODE_ENV详解
  2. 烟台一职学校计算机,烟台一职是个什么样的学校??
  3. web网页设计期末课程大作业:红色中国文化主题网站设计——中国文化(6页) HTML+CSS+JavaScript HTML网页设计制作大作业 学生HTML文化网页作业作品
  4. 计算机中逻辑运算顺序,【计算机系统】位运算与逻辑运算
  5. mysql、redis操作
  6. 显示系统信息linux,如何使用Neofetch显示系统信息
  7. 不知道视频怎么转音频?手把手教你视频转音频
  8. 华为机考攻略(python)--字符串操作【9题】(第五题HJ101输入整型数组和排序标识)
  9. 定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。
  10. 充电宝无线和有线哪个好?无线的充电宝好吗