当前位置:   article > 正文

小程序 - 修改头像功能_小程序修改头像并上传到php后端

小程序修改头像并上传到php后端

具体需求:登录后缓存微信头像,在调用某接口时,判断数据库中用户是否有头像,若为空,则将微信头像上传至服务器中,后续展示就用数据库中的头像数据。

具体实现:获取缓存的微信头像,调用wx.getImageInfo()得到微信头像路径(这一步是必需步骤),再调用wx.uploadFile()上传微信头像。

代码:

  1. saveUserPhoto(){
  2. var that = this;
  3. let wxPhoto = wx.getStorageSync('avatar')
  4. console.log('开始上传微信头像到后台,微信头像地址:',wxPhoto)
  5. //获取图片信息
  6. wx.getImageInfo({
  7. src: wxPhoto,
  8. success: function (res) {
  9. var params = {
  10. imgPath: res.path
  11. }
  12. //上传图片
  13. network.upload(params,that.getFileInfo);
  14. },
  15. fail: function(srev){
  16. }
  17. });
  18. },
  19. getFileInfo(res){
  20. if(res.fileUrl.state!==0){
  21. wx.showToast({
  22. title: '上传头像失败',
  23. icon: 'none'
  24. })
  25. return
  26. }
  27. console.log('调用upload接口上传成功,头像路径:',res.fileUrl.data.url)
  28. let params = {
  29. photo: res.fileUrl.data.url
  30. }
  31. network.updateUserPhoto(params,this.getPhotoResult,res.fileUrl.data.url);
  32. },
  33. getPhotoResult(res,uploadUrl){
  34. if(res.data.state===0){
  35. wx.setStorageSync('avatar',config.apiList.wxDownload+uploadUrl)
  36. }
  37. console.log('上传微信头像成功')
  38. }

 

  1. // 上传
  2. function upload(params,cb, obj){
  3. var formDataObj = {}
  4. if(params.hasOwnProperty('zipLevel')){
  5. formDataObj.zipLevel = params.zipLevel
  6. }
  7. wx.uploadFile({
  8. url: config.apiList.wxUpload,
  9. filePath: params.imgPath, //要上传文件资源的路径
  10. name: 'file', //文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
  11. header: {
  12. "authorization": wx.getStorageSync('token'),
  13. 'Content-Type': 'multipart/form-data',
  14. },
  15. //HTTP 请求中其他额外的参数比如 用户id
  16. formData: formDataObj,
  17. success(res) {
  18. var file = {
  19. tempFileUrl: params,
  20. fileUrl: JSON.parse(res.data)
  21. }
  22. typeof cb == 'function' && cb(file, obj)
  23. },
  24. fail: function () {
  25. wx.showToast({
  26. title: '请求失败',
  27. })
  28. }
  29. })
  30. }

遇到的问题:在本机调试时成功,但发布到体验版时没有上传成功。在同事手机试时,偶然发现,当打开调试模式时就可以上传成功了。原来,我本地开发时打开了“不校验合法域名...”。当我关闭不校验合法域名时,就重现了这个问题。并且控制台报错"https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中",最后在小程序后台的downloadFile合法域名中配置上就可以了。


 注意: 在小程序配置合法域名后 ,一定要在开发者工具 - 项目配置中域名信息中刷新一下。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/612977
推荐阅读
相关标签
  

闽ICP备14008679号