微信小程序对接七牛云存储的方法(2)

shouldUseQiniuFileName:表示是否由七牛来定义上传文件名,如果是 true,则文件 key 由 qiniu 服务器分配 (全局去重)。默认是 false,也就是我们自己来定义。如果key设置了,优先级最高。

七牛存储区域表:

微信小程序对接七牛云存储的方法

这样,在需要上传页面调用七牛的qiniuUploader.js,就可以上传了。

 会遇到的问题: 

某张图片/视频/录音上传失败可能的原因:

①上传文件不是后端所允许的大小,图片一般小于3M。视频/录音我限制是小于1M 

②上传文件格式在后端没有被允许。

③token获取失败,比如我遇到的,七牛的qiniuUploader.js文件通过接口获取token,默认是这样[var token = res.data.token;],而我们后端接口返回的token是这样

微信小程序对接七牛云存储的方法

所以我需要在七牛的js文件里修改为[var token = res.data.extra;],要么让后端改。

2、视频上传七牛

视频上传和图片上传是一个套路,只是文件格式不同,视频一般就一个文件,不像图片有多张,需要搞个队列来上传。所以上传视频就这样:

//事件绑定,添加视频 chooseVideo: function (res) {   var that =this;   wx.chooseVideo({     sourceType: sourceType[this.data.sourceTypeIndex],     camera: camera[this.data.cameraIndex],     maxDuration: duration[this.data.durationIndex],     success: function (res) {     var shipinFile= res.tempFilePath;     that.setData({     src: shipinFile   });     //用户寻选择好图片后,调用上传方法        that.shipinUploadqiniuMethod(shipinFile,"shipin_");     }   }) }, //视频上传七牛 shipinUploadqiniuMethod: function (shipinFile, fileHead){     var that =this;     var shipinName = shipinFile.substr(30,50);        qiniuUploader.upload(shipinFile, (res) => {     //视频上传成功console.log(res)   },   (error) => {     //视频上传失败,可以在七牛的js里面自己加了一个err错误的返回值     console.log('error: '+ error)   },   {     domain:'oqxfq54dn.bkt.clouddn.com',        uptokenURL:'https://get.qiniutoken.com/minibx/geo_f/gain_qn_token',        uploadURL:'https://up.qbox.me',//华东     key: fileHead + shipinName ,// 自定义文件 keyregion:'ECN',//华东区域代码});   } },

3、录音文件上传七牛

小程序的录音格式为silk,录音上传七牛,可以和视频共用一个方法。但虽然上传成功了,状态码为403,七牛没有返回data,像这样:

微信小程序对接七牛云存储的方法

正常上传时,能正常返回data,并且状态码是200

微信小程序对接七牛云存储的方法

后端配置silk格式允许,这样应该是没问题的。

上传成功七牛却没有返回data,这个data里有文件传七牛那边在线地址,不返回我们怎么访问了。现在的处理是:把音频文件传到自己服务器。目前就只能这么办了。

这里是小程序对接七牛云存储的官方文档:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyjwxf.html