uniapp修改头像

短命女 2023-02-17 05:24 84阅读 0赞

以下将是 uniapp 借用七牛云修改头像的代码,但是其他也可借鉴,原理相同,局部更改即可。
以下代码用到的地址皆为七牛云的地址,上传图片很方便,会给你返回图片地址,个人用户注册账号后建立一个存储空间,可免费使用30天,后期换成公司的就好了。

注: 七牛云空间地址必须是公开,否则无法显示

(1)html,一个默认图片和一个修改后的图片

  1. <image v-if="avarShow" :src="avar" mode=""></image>
  2. <image v-else src="../../static/user/head.png" mode=""></image>

(2)js

  1. data() {
  2. return {
  3. imgToken: '', // 本地图片上传到七牛云会返回一个图片路径,需要传图片 token
  4. avar: '', // 修改后的图片路径
  5. avarShow: false, // true 时显示修改后的图片
  6. userId: '' // 用户 id,看接口需求
  7. }
  8. },
  9. methods {
  10. // 修改头像
  11. updateAvar(way) {
  12. const {imgToken,userId} = this
  13. uni.chooseImage({
  14. count: 1, // 头像只上传1张
  15. sourceType: [way], // way是点击时传入的打开方式相机或相册
  16. success: async (chooseImageRes) => {
  17. //获取头像token的接口
  18. const data = await this.$api.api.user.getImgToken();
  19. const tempFilePaths = chooseImageRes.tempFilePaths;
  20. uni.uploadFile({
  21. url: 'https://upload-z2.qiniup.com/', // 上传地址(七牛云)
  22. filePath: tempFilePaths[0],
  23. name: 'file',
  24. formData: {
  25. token: data.data.body, //头像token,参考返回数据
  26. key: chooseImageRes.tempFiles[0].name // 图片名,移动端可能不存在name,可修改为 key: new Date().getTime()+".png" 随机
  27. },
  28. success: (uploadFileRes) => {
  29. // console.log(uploadFileRes);是一个字符串
  30. const data = JSON.parse(uploadFileRes.data)
  31. // 上传头像接口(参数根据自己的来)
  32. this.$api.api.user.updateHead({
  33. "creator": this.$store.state.loginName, //上传者
  34. "headPath": "http://qapxsiqga.bkt.clouddn.com/"+data.key, // 图片最终的路径,http://qapxsiqga.bkt.clouddn.com/是七牛云空间地址
  35. "userId": userId
  36. }).then(res=>{
  37. console.log(res)
  38. this.avar = "http://qapxsiqga.bkt.clouddn.com/"+data.key // 存入修改后的头像
  39. this.avarShow = true // 显示修改后的头像
  40. })
  41. }
  42. });
  43. }
  44. })
  45. }
  46. }

最后记得获取用户信息,将获取到的头像赋值给 avar,这样一进来就是你换过的头像了,但我们大多数情况都需要限制图片大小和格式,其实很简单,在 uni.chooseImage 的成功函数 success 中添加如下代码:

  1. //此处只适配了 app 和小程序,h5 返回的 tempFiles 不一样
  2. // #ifndef H5
  3. const tempFiles = chooseImageRes.tempFiles;
  4. for(var i=0;i<tempFiles.length;i++) {
  5. var size = tempFiles[i].size;
  6. var path = tempFiles[i].path;
  7. var formatImage = path.split(".")[(path.split(".")).length - 1];
  8. console.log("图片格式" + formatImage)
  9. if (formatImage != "png" && formatImage != "jpg" && formatImage != "jpeg") {
  10. return this.$u.toast('只能上传.png、.jpg、.jpep 格式')
  11. }
  12. if (config.IMG_SIZE < size) {
  13. return this.$u.toast('图片大小限制:' + (config.IMG_SIZE / 1000 / 1024) + "MB")
  14. }
  15. }
  16. // #endif

好了,不知道有没有帮到您,仅供参考!

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读

    相关 layui修改头像功能

    前言 场景大概是用户点击修改头像,会显示一个弹出框,展示当前系统所有图片,用户选择了一张之后,就会覆盖原有的那一张,注意,不能照搬,要自己调试修改的,因为每个公司重新都封

    相关 uniapp修改头像

    以下将是 uniapp 借用七牛云修改头像的代码,但是其他也可借鉴,原理相同,局部更改即可。 以下代码用到的地址皆为七牛云的地址,上传图片很方便,会给你返回图片地址,个人用