微信小程序 · 图片上传

  • Post author:
  • Post category:小程序




小程序 · 图片上传

在小程序端实现图片上传,需要调用小程序的图片选择接口(

chooseImage

)和本地资源上传接口(

uploadFile

)。



1. wx.chooseImage()

  • 从本地相册选择图片或使用相机拍照。

参数:

在这里插入图片描述

实例:

wx.chooseImage({
  count: 1,//可选图片数量
  sizeType: ['original'],//original	原图	compressed	压缩图
  sourceType: ['album', 'camera'],//支持选取图片album	从相册选图	camera	使用相机
  success (res) {
    // tempFilePath可以作为img标签的src属性显示图片
    const tempFilePaths = res.tempFilePaths[0]
    this.setData({
        ["userInfo.url"] : tempFilePaths
    })
  }
})



2. wx.unloadFile()

  • 将本地资源上传到服务器。客户端发起一个

    HTTPS

    POST 请求,其中

    content-type



    multipart/form-data

参数:

在这里插入图片描述

实例:

wx.uploadFile({
    // 后台请求地址
    url: 'https://192.168.1.1:8080/upload',
    // 文件本地路径
    filePath: this.data.userInfo.url,
    // 后台获取我们图片的key
    name: 'file',
    // 额外的参数
    formData: {
        // 一般传递token
        'user': 'test'
    },
    success(res) {
        console.log(res)
    },
    fail: function (err) {
        console.log(err)
    }
})



3. 实现

// 图片上传 API

const upload = () => {
  return new Promise((resolve, reject) => {
    wx.chooseImage({
      count: 1,//可选图片数量
      sizeType: ['original'],//original	原图	compressed	压缩图
      sourceType: ['album', 'camera'],//支持选取图片album	从相册选图	camera	使用相机
      success(res) {
        // 获取图片路径
        const tempFilePaths = res.tempFilePaths
        resolve(res)
        wx.uploadFile({
          // 后台请求地址
          url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
          // 文件本地路径
          filePath: tempFilePaths[0],
          // 后台获取我们图片的key
          name: 'file',
          // 额外的参数
          formData: {
            // 一般传递token
            'user': 'test'
          },
          success(res) {
            resolve(res)
          },
          fail: function (err) {
            reject(err)
          }
        })
      }
    })
  })
}


export default upload
//接口调用
import upload from '../../api/upload'//引入
...
uploadImg() {
    // 上传图片
    upload().then(res => {
        console.log(res)
        this.setData({
            ["userList[0].url"]: res.tempFilePaths[0],
            imgUrl: res.tempFilePaths[0],
            isUpload: false,
        })
    }).catch(err => {
        console.log(err)
    })
}



版权声明:本文为weixin_45828332原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。