微信小程序上传API接口wx.uploadFile的坑

匿名 (未验证) 提交于 2019-12-03 00:27:02

小程序的坑比较多,原因在于小程序开发文档相当的不全,所以开发小程序是比较痛苦的,但也正是因为坑多,技术却一步一步的往上升了...不知道该笑还是该哭。

进入正题:wx.uploadFile的坑

坑一:返回的数据格式不是JSON格式(需要自己用JSON.parse()转化格式);

坑二:返回的数据值用点运算符有时获取不到(只能通过对象的属性名获取obj['name'])

代码详解:

handleData: function (token, audioFile) {     let that = this;     let url = 'https://www.xxx.com/......';//此处换上你的接口地址     wx.uploadFile({       url: url,       filePath: audioFile,       name: 'audioFile',//这里是上传音频文件类型,按照需求填写       header: {         "Content-Type": "multipart/form-data",         'accept': 'application/json',       },       formData: {         'token': token,  //其他额外的formdata,按需求来       },       success: function (res) {         //坑一:与wx.request不同,wx.uploadFile返回的是[字符串],需要自己转为JSON格式         //如果不转换,直接用点运算符是获取不到后台返回的值的         let datas = JSON.parse(res.data)         let status = datas.status;         let msg = datas.msg;         //坑二:一般来说,转化之后的数据是能用点运算符获取的,但是如果大的对象里又包含超级多的对象,也就是对象层层嵌套,有十个嵌套之多,那么用点运算符有时候会出现获取不到值的情况。那么这时需要通过对象的属性名获取到值,也是要这样写:let id = datas['attr1']['attr2']['attr3']...['attr10']['id'];才能获取到         if (status == "2") {           //codes go here           setTimeout(function () {             //调用保存音频文件到本地             that.saveRecordingFile(audioFile)           }, 500)         } else {           wx.showToast({             title: '上传失败,请重试!',           })           return;         }       },       fail: function (res) {         wx.showModal({           title: '提示',           content: '上传失败,请重试!',         })         return;       },     })   },    saveRecordingFile: function (audioFile) {     let that = this;     wx.saveFile({       tempFilePath: audioFile,       success: function (res) {         let savedFilePath = res.savedFilePath;         that.setData({           savedFilePath: savedFilePath         })       }     })   },


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!