您的位置:首页 > 汽车 > 新车 > uniapp chooseVideo和uploadFile 选择视频或照片上传抖快平台踩坑

uniapp chooseVideo和uploadFile 选择视频或照片上传抖快平台踩坑

2024/7/7 21:24:56 来源:https://blog.csdn.net/qq_36635270/article/details/139677512  浏览:    关键词:uniapp chooseVideo和uploadFile 选择视频或照片上传抖快平台踩坑

先贴代码

uni.chooseVideo({sourceType: ['album'],fail:(err)=>{console.log(TAG, "==chooseVideo-fail==err:", err)page.resetUploadFileField()if (err.errNo == 10200 || 'chooseVideo:fail take video fail' == err.errMsg || 'chooseVideo:fail auth deny' == err.errMsg) {ToastUtil.showTipToast(`前往手机设置-应用打开${getHostName_()}相册权限`)} else if (err.errNo != 10502 && 'chooseVideo:fail cancel' != err.errMsg) {ToastUtil.showTipToast("获取上传文件异常:" + JSON.stringify(err))} },success:(res)=>{console.log(TAG, "==chooseVideo-success==res:", res)if (res && res.tempFilePath && res.duration >= 3 && res.size <= 500*1024*1024) {page.uploadFile = res.tempFilePathpage.uploadFileDuration = res.durationpage.uploadFileSize = res.sizepage.chooseVideoSucc = truepage.uploadMedia()},				})//上传视频async uploadMedia() {let page = this//原生上传方法if (this.chooseVideoSucc) {this.isUploading = truelet header = {}console.log(TAG,"==uploadMedia chooseVideoSucc 开始上传==")this.uploadTask = uni.uploadFile({url: res.data.host, //上传地址filePath: page.uploadFile,fileType: 'video',name: 'file',//重要标识header: header,formData:{//阿里云os端相关配置参数由后台下发"key":res.data.dir,"OSSAccessKeyId":res.data.access_id,"policy":res.data.policy,"signature":res.data.signature,"callback":res.data.callback,},success(res) {console.log(TAG, "==上传成功==res:", res)},fail(err) {console.log(TAG, "==上传失败==err:", err)}})//上传进度监听,条件编译this.uploadTask.onProgressUpdate((res) => {console.log('onProgressUpdate==res:',res)//快手浮点型0-1// #ifdef MP-KUAISHOUpage.uploadProgress = (res.progress.toFixed(2))*100// #endif//非快手浮点型1.0-100.0// #ifndef MP-KUAISHOUpage.uploadProgress = res.progress// #endif				})}},

上面的代码看着是真恶心,而且快手端根本达不到产品的要求,小吐槽一下。。。
先做个小笔记,学习中遇到的一个问题:运算符双问号 ?? 在快手的template标签中会编译报错,抖音是可以正常解析的。
以下是坑::::

  1. 申请访问相册权限拒绝后返回区别:抖音有明确的错误码: err.errNo,快手只有err.errMsg,
    而且快手自己没有“图片和视频”访问权限,和有权限了,跳转到相册选择页直接退出不选择内容,都在api回调中返回 errMsg:chooseVideo:fail take video fail,
    真的很不规范好吧
  2. uni.authorize({scope: “scope.camera”,})这个玩意没法用,反馈的结果完全没有参考意义
  3. uni.openSetting({success(authSetting) {},fail() { }),这个方法打开的是小程序宿主对向程序开放的权限页面,在小程序的三个点里面也能拉起,实际真没啥意义
  4. 上传进度,快手是0-1的浮点型,抖音是1-100的浮点型;还有那个fileType: ‘video’,name: ‘file’,当时name随便填的,没想到把我后端一直收不到数据,但是上传进度是正常的,真是服了,到处屎坑
  5. 上传阿里云OSS的坑,如果使用阿里云node.js 的方法直接跨域传到阿里云上,是万万行不通的,真的把我折磨了两天,oss-sdk和api根本用不了,劝各位往后放弃直传,只能让后端透传创建一个我们自己的域名,给到相应的阿里云oss的key和secret也已完成间接直传
  6. 最大的坑是从阿里云跨域下载文件,到目前位置依然没有解决办法,小程序的网络请求都默认添加上了referer,这个需要在阿里云后端配置白名单,出于安全考虑,不让配都快自己的referer,所以没法直接下载,搞我半条命

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com