腾讯云点播小程序端上传 SDK

云点播是专门应对上传大视频文件的。

腾讯云点播文档:https://cloud.tencent.com/document/product/266/18177

这个文档比较简单,实在不行,把demo下载下来,一看就明白了,然后再揉一下挪到自己的项目里。完事。

getSignature: function(callback) {

uni.request({

url: 'https://www.xxx.com/mnp/zsapi/getSignature.php',

method: 'POST',

data: {

mid: uni.getStorageSync('mid'),

token: uni.getStorageSync('token')

},

header: {

'content-type': 'application/x-www-form-urlencoded'

},

success: function(res) {

if (res.data.signature) {

callback(

res.data.signature

);

} else {

return '获取签名失败';

}

}

});

},

ChooseImage(e) {

console.log(e)

let that = this

// 选择多张图片

uni.chooseMedia({

count: 15, // 最多可以选择的图片张数

mediaType: ['image', 'video'],

sizeType: ['compressed'], // 可以指定是原图还是压缩图

sourceType: ['album'], // 可以指定来源是相册还是相机

// maxDuration: 30,

// camera: 'back',

success: function(res) {

console.log(res, res.tempFiles[0], '???')

if (res.type == 'video') {

if (e == '0') {

uni.showToast({

title: '第一张必须上次图片',

duration: 2000,

icon: 'none'

})

return

}

//选择视频

that.videoFile = res.tempFiles[0]

setTimeout(() => {

that.startUpload(e)

}, 500)

复制代码
					} else {
						// 选择图片成功,res.tempFiles 包含选择的图片路径列表
						uni.showLoading({
							title: '上传中...'
						})
						// console.log(res.tempFiles)
						that.uploadDIY( res.tempFiles, 0, 0, 0,  res.tempFiles.length,e);
						return
						for (let i = 0; i < res.tempFiles.length; i++) {

							uni.uploadFile({
								url: 'https://www.xxx.com/mnp/zsapi/gongdi_upload.php',
								filePath: res.tempFiles[i].tempFilePath,
								name: 'file',
								formData: {
									'mid': uni.getStorageSync('mid'),
									'token': uni.getStorageSync('token'),
								},
								success(res) {
									const data = JSON.parse(res.data.replace('\uFEFF',
										''))
									console.log(data)
									if (data.bs == 'success') {
										uni.showToast({
											title: data.errmsg,
											duration: 2000,
											icon: 'success'
										})
										that.infolist[e].imglist.push(data.img)
									} else if (data.bs == 'guoqi') {
										uni.showToast({
											title: data.errmsg,
											duration: 2000,
											icon: 'error'
										})
										setTimeout(function() {
											uni.redirectTo({
												url: '../../pagesD/login/login'
											})
										}, 500)
									} else {
										uni.showToast({
											title: data.errmsg,
											duration: 2000,
											icon: 'error'
										})
									}
								},
								fail() {
									uni.showToast({
										title: '服务器繁忙,请稍后再试',
										duration: 2000,
										icon: 'error'
									})
								}
							})
						}
					}
				}
			})
		},
		startUpload(e) {
			let that = this
			uni.showLoading({
				title: '上传中...',
				mask: true,
			})
			const self = this;
			const uploader = VodUploader.start({
				mediaFile: self.videoFile, //必填,把chooseVideo回调的参数(file)传进来
				getSignature: self.getSignature, //必填,获取签名的函数
				error: function(result) {
					console.log("error");
					console.log(result);
					// uni.hideLoading();
					uni.showModal({
						title: "上传失败",
						content: JSON.stringify(result),
						showCancel: false
					});
				},
				progress: function(result) {
					console.log("progress");
					console.log(result);
					// uni.hideLoading();
					self.progress = parseInt(result.percent * 100)
				},
				finish: function(result) {
					console.log("finish");
					console.log(result);
					let brr = []
					let obj = {}
					obj.url = result.videoUrl
					brr.push(`myvideo${e}`)
					that.videoarr = brr
					obj.id =  `myvideo${e}`
					self.infolist[e].videolist.push(obj)
					uni.showToast({
						title: '上传成功',
						duration: 2000,
						icon: 'success'
					})
					self.reset();
				}
			});
			this.uploader = uploader
		},
		uploadDIY(filePaths, successUp, failUp, i, length,e) {
			let that = this
			uni.uploadFile({
				url: 'https://www.xxxx.com/mnp/zsapi/gongdi_upload.php',
				filePath: filePaths[i].tempFilePath,
				name: 'file',
				formData: {
					'mid': uni.getStorageSync('mid'),
					'token': uni.getStorageSync('token'),
				},
				success: (res) => {
					const data = JSON.parse(res.data.replace('\uFEFF',''))
					if (data.bs == 'success') {
						uni.showToast({
							title: data.errmsg,
							duration: 2000,
							icon: 'success'
						})
						successUp++;
						// console.log('上传图片成功:', JSON.parse(res.data));
						// var data = JSON.parse(res.data);
						// console.log(data)
						// 把获取到的路径存入imagesurl字符串中
						that.infolist[e].imglist.push(data.img)
						// console.log(this.data.imagesurl)
					} else if (data.bs == 'guoqi') {
						uni.showToast({
							title: data.errmsg,
							duration: 2000,
							icon: 'error'
						})
						setTimeout(function() {
							uni.redirectTo({
								url: '../../pagesD/login/login'
							})
						}, 500)
					} else {
						uni.showToast({
							title: data.errmsg,
							duration: 2000,
							icon: 'error'
						})
					}
					
				},
				fail: (res) => {
					failUp++;
				},
				complete: () => {
					i++;
					if (i == length) {
						// Toast('总共' + successUp + '张上传成功,' + failUp + '张上传失败!');
					} else { //递归调用uploadDIY函数
						that.uploadDIY(filePaths, successUp, failUp, i, length,e);
					}
				},
			});
			
		},
相关推荐
sheji34168 小时前
【开题答辩全过程】以 基于微信小程序的在线学习系统为例,包含答辩的问题和答案
学习·微信小程序·小程序
头发还在的女程序员11 小时前
小剧场短剧影视小程序源码分享,搭建自己的短剧小程序
人工智能·小程序·短剧·影视·微剧
Akamai中国11 小时前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·云服务·云存储
oMcLin11 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 OpenStack 云计算平台,实现多租户虚拟化与弹性伸缩?
ubuntu·云计算·openstack
Tob管理笔记14 小时前
建筑业如何精准开拓优质客户?技术驱动下的方法论与实践
大数据·云计算·数据库开发
咕噜企业分发小米18 小时前
独立IP服务器有哪些常见的应用场景?
人工智能·阿里云·云计算
Mr. zhihao19 小时前
使用 KMS 管理阿里云 OSS 临时凭证(AK/SK/STS):原理、对比与实战代码示例
阿里云·云计算
奇树谦19 小时前
FastDDS阿里云DDSRouter安装和使用(失败)
elasticsearch·阿里云·云计算
虎冯河19 小时前
阿里云 + 宝塔面板环境Python 项目从 0 到 1 部署全流
python·阿里云·云计算
qq_124987075319 小时前
基于springboot归家租房小程序的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·小程序·毕业设计·计算机毕业设计