腾讯云点播小程序端上传 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);
						}
					},
				});
				
			},
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值