微信小程序坑点挖掘(五)小程序图片使用及上传相关问题解决方案

229 阅读2分钟

这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战

一、微信小程序背景图片的使用问题

最近在使用小程序的时候,有一个需要背景图片的需求,虽然我个人感觉直接丢图片上去也不是不行,当然它终究有它的应用场景。但是背景图片只能使用网络图片,这样子很容易多发一次请求,影响性能,占用带宽,有没有比较好的解决方案?

其实还是有的,虽然不支持本地图片,但是我们可以利用将本地图片转码为base64(即把图片变成一个字符串)的方式减少一次请求,相当于是使用了本地图片!

而图片进行base64转换的编码地址:tool.oschina.net/encrypt?typ…

二、小程序图片上传的问题

图片上传一直是个比较难顶的问题,我之前写小项目的时候也多次遇到这个问题,所以跟大家分享一下。

这里我封装了一个私有的(命名带_即私有)上传图片的函数,大家复制后改一下即可用,type参数是选择打开相册(album)或者拍照上传(camera),按自己的需要填写即可。需要修改的只有url,其它诸如选取图片的个数什么的自己看看设置就行。

 _helpgetPicture1(type){
    var that = this;
    wx.chooseImage({
      count: 1,//选择图片的个数
      sizeType: ['original', 'compressed'],
      sourceType: [type],
      success: function (res) {
        that.setData({
          img1: res.tempFilePaths[0],//保存所选择图片的路径
        })
        if (that.data.img1) {//避免用户打开不选择图片出错,加了个判断
          const path1 = that.data.img1
          wx.uploadFile({
            url: '后端老哥给的上传图片url',
            filePath: path1,//文件路径即我们上面保存的选择图片的路径
            name: 'file',//name是与后端约定得到的
            header: {
              "Content-Type": "application/x-www-form-urlencoded",
              'cookie': app.globalData.cookey
            },//必须加这个,就带上session嘛
            success(res) {//上传成功后写你需要的操作
              console.log("人头已上传");
              console.log(res.data);
            },
            fail(res) {
              console.log("sorry we lost")
            }
          })
        }
      },
    })
  },