首先,腾讯云的文档已经说的很清楚了,一定要认真看完:
腾讯云客户端上传文档
以下是我实现功能中碰到的问题:
- 如何通过js获取input file 的对象
- 如何指定上传后的视频自动转码和截图等任务流
- 如何在上传时指定文件分类和文件名
- 如何取消上传
如何通过js获取input file 的对象
html
<input type="file" name="videoFile" />
js
var videoFile = $("input[name='videoFile']")[0]['files'][0];
如何指定上传后的视频自动转码和截图等任务流
可以在ajax获取签名时,在签名形成前的参数中指定,具体可以查看文档说明: 上传时指定任务流
"procedure" => "QCVB_SimpleProcessFile(1,1,10,10)"
// 1: 默认模板转码 1: 默认模板水印 10: 采用id=10的采样截图方案 10: 采用id=10的雪碧图方案
如何上传的同时指定文件分类和文件名
指定文件分类
文件分类在文档中找到了方法,同样是可以在签名的参数中指定,但是注意,签名的有效期是1天,如果上传的文件分类不一样,你需要生成新的签名
"classId" => 分类名
这里的id是视频分类的代号,貌似从控制台是无法看到的,我是调用服务端api,然后拉取所有分类,就能看到对应的id
指定文件名
这个是无法从文档上找到的,咨询了工单后,可以在js中指定,只不过文档的例子中没有标明
qcVideo.ugcUploader.start({
videoName: 视频名,
videoFile: videoFile,
getSignature: getSignature,
如何取消上传
直接查看文档就可以啦,注意下那两个参数,需要是全局变量,因为我们肯定是按键触发取消,所以需要在两个局部函数中使用这两个变量
//用于实现取消上传的两个对象。
var uploadCos;//需要在 progress 回调中赋值。
var uploadTaskId;//需要在 progress 回调中赋值。
upload: function(){
qcVideo.ugcUploader.start({
videoFile: videoFile,//这个是视频,类型为 File
getSignature: getSignature,//这个是第二步定义的函数
error: function(result){
console.log('上传失败的原因:' + result.msg);
},
progress: function(result){
console.log('上传进度的文件类型:' + result.type);
console.log('上传进度的文件名称:' + result.name);
console.log('上传进度:' + result.curr);
uploadCos = result.cos;
uploadTaskId = result.taskId;
},
finish: function(result){
console.log('上传结果的 fileId:' + result.fileId);
console.log('上传结果的视频名称:' + result.videoName);
console.log('上传结果的视频地址:' + result.videoUrl);
}
});
},
// 取消上传
cancle:function(){
qcVideo.ugcUploader.cancel({
cos: uploadCos,
taskId: uploadTaskId
});
// 你也可以在这里清空上传进度条之类的
}
文件上传,肯定要制作一个进度条,来显示告诉用户进度,文档中也有说明啦,自己去看,很简单的做法,返回的是浮点小数,需要转换
哦啦