vue 中移动端项目 之 图片上传(代码分享+话术总结)

话不多说先上代码:

  1. 点击显示弹框
<van-cell title="头像" is-link @click="avatarShow=true"></van-cell>
  1. 显示弹框,再点击从手机相册选择
    <!-- 头像弹出层 -->
    <van-action-sheet v-model="avatarShow" cancel-text="取消">
      <p class="p">
        <van-uploader> 拍照 </van-uploader>
      </p>
      <p class="p">
        <van-uploader :after-read="afterRead"> 从手机相册选择</van-uploader>
      </p>
    </van-action-sheet>
  1. 逻辑处理
    // 图片上传
    afterRead(file) {
      // console.log(file)
      // 提取自带文件信息
      let img = file.file
      // console.log(img)
      // 数据序列化
      let data = new FormData()
      // console.log(data)
      // 追加数据到序列化的对象中
      data.append('file', img)
      // 请求接口传入数据
      this.$axios.post('/public/img', data).then((res) => {
        // console.log(res)
        // 请求接口替换后台数据
        this.$axios.put('/user', { avatar: res.data.data.path }).then((res) => {
          // console.log(res)
          // 弹框隐藏
          this.avatarShow = false
          // 重新获取数据,渲染页面
          this.getInfo()
        })
      })
    },

图片上传(话术总结)

我们使用 vant 中的组件 van-uploader 来进行实现图片上传操作。他自身带了一个属性是 :after-read 里面的参数是一个回调函数,这个回调函数是在点击了确定后才会触发。

回调函数的逻辑处理:不明白的话可以根据上面的代码一步一步调式来操作。。。首先可以查看一下他带回来的数据,我们提取出想要的数据,然后进行数据序列化(new FormData()),这一步是重中之重。再将我们提取的数据放入(append)序列化后的对象中,如果是线上接口我们就请求接口进行传入数据,替换后台数据,在进行重新获取数据进行页面渲染,让弹框隐藏,这时候你就会发现头像已经更换成功啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值