经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » 微信小程序 » 查看文章
微信小程序实践:七牛云上传图片
来源:cnblogs  作者:听着music睡  时间:2018/10/30 9:20:51  对本文有异议

小程序更换用户头像功能、更换图片等功能

思路图片上传七牛云,成功之后返回的图片url上传项目服务器

 

------------------------------------------------------------------------------------------------------

先选择图片

小程序提供api :chooseImage

 var that = thiswx.chooseImage({
      sourceType: ['album', 'camera'], // 相册选取+拍摄选取  sizeType: ['compressed'], // 压缩图  count: 1, // 最多可以选择的图片张数      success: function(res) {// 成功 , 显示图片        that.setData({
          userAvatar: res.tempFilePaths
        })//上传图片到七牛        wx.showLoading({
          title: '',
          mask: true})
        that.updateImg(res.tempFilePaths, that.data.token)
      },
      fail: function(res) {// 失败      }
    })

 

------------------------------------------------------------------------------------------------------

获取到图片之后 上传图片到七牛云

准备:

先下载配置小程序七牛云的sdk

下载地址:https://developer.qiniu.com/sdk#community-sdk

找到小程序的sdk 点击安装

 


 

下载一个文件 ,解压缩之后找到sdk目录下的 qiniuUploader.js 文件  复制到小程序项目的utils目录下,配置就完成了。

 

------------------------------------------------------------------------------------------------------

使用:

1、在需要用到七牛云的页面 require 七牛云的sdk

 

 

2、使用qiniuUploader上传图片

注意,uptoken  uploadURL domain 是从服务器获取到的 , key就是上传到七牛云的图片路径+文件名

  //上传图片到七牛  updateImg: function(filePath, uptoken) {var that = thisvar pathX = filePath + ''var qiniu_key =  Date.parse(new Date()) / 1000 + ".jpg"qiniuUploader.upload(pathX, (res) => {      // 将图片url上传给服务器  if (that.data.domain[that.data.domain.length - 1] == '/') {
        that.setData({
          userAvatar: that.data.domain + qiniu_key
        })
        console.log('avatar_url:' + that.data.userAvatar)
      } else {
        that.setData({
          userAvatar: that.data.domain + '/' + qiniu_key
        })      }      // 图片上传成功之后取消加载框      wx.hideLoading()
    
    }, (error) => {      // 图片上传失败之后取消加载框      wx.hideLoading()      // 把图片更改回来      that.setData({
        userAvatar: that.data.userInfo.avatar
      })
    }, {
      key: qiniu_key,
      uptoken: that.data.token,            // 从自己的服务器获取
      uploadURL: that.data.qiniu_url,      // 从自己的服务器获取
      domain: that.data.domain,            // 从自己的服务器获取
    });
  },

 

3、注意上面在

that.updateImg(res.tempFilePaths, that.data.token)

之前进行了一步显示加载框的操作,并设置 mask:true

wx.showLoading({
          title: '',
          mask: true})

 

该属性作用:是否显示透明蒙层,防止触摸穿透,默认是false

 

这里设置为true ,则为了加载框不消失的情况下,无法进行别的触摸操作

 

因为要上传图片到七牛云,这是一个异步操作,如果上传图片到七牛云还没有成功,用户点击了退出或者保存按钮,就会导致七牛云返回的图片url没有更新到服务器

所以在图片上传七牛云结果里面再进行关闭加载框 就能保证 上传图片到七牛云这个操作完成之后才能进行别的触摸操作。

 

 

 

--------------------------------------------------------------------------------------

 

小程序实践(一):主页tab选项实现

小程序实践(二):swiper组件实现轮播图效果

小程序实践(三):九宫格实现及item跳转

小程序实践(四):动态控制组件的显示/隐藏

小程序实践(五):for循环绑定item的点击事件

小程序实践(六):view内部组件排版

小程序实践(七):页面间传值

小程序实践(八):验证码倒计时功能

小程序实践(九):返回到上一个界面并传值回去

小程序实践(十):textarea实现简单的编辑文本界面

小程序实践(十一):showModal的使用

小程序实践(十二):七牛云上传图片

 

 友情链接:直通硅谷  点职佳  北美留学生论坛