微信小程序封装多张图片上传api代码实例


Posted in Javascript onDecember 30, 2019

这篇文章主要介绍了微信小程序封装多张图片上传api代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

代码如下

export default class Upload{
  constructor(object) {
    this.obj = {
      count:1,
      sizeType:['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType:['album','camera'],  // 可以指定来源是相册还是相机,默认二者都有
    }
    if(Object.prototype.toString.call(object) === "[object Object]"){
      Object.assign(this.obj, object);
    }else{
      uni.showToast({
        title: '参数必须为对象',
        icon:"icon",
        duration: 2000
      });
    }
     
 
    return this;
  }
  // 上传图片 返回一个图片的数组集合
  async uploadPic(){
    let chooseImageResult = await this.chooseImage()
    console.log("选择图片",chooseImageResult)
 
    let imgArr = await chooseImageResult.tempFilePaths.map(async (item,index) => {
      uni.showLoading({
        title: `正在上传第${index+1}张`
      });
      let uploadFileResult = await this.uploadFile(item)
 
      console.log("上传图片过程",uploadFileResult)
      return getApp().globalData.img_prefix + uploadFileResult.data.file.url;
    })
 
    return new Promise((resolve,reject) => {
      Promise.all(imgArr).then((result)=>{
         
        uni.hideLoading();
        uni.showToast({
          title: '上传成功',
          icon:"none",
          duration: 2000
        });
        console.log("上传图片结果",result)
        resolve(result)
      })
    }) 
  }
  uploadFile(file){
    return new Promise((resolve, reject) => {
      uni.uploadFile({
       url: 'https://baidu.com/upload/', //此处是你自己上传接口
       filePath: file,
       name: 'file',
       success: function (res) {
        var data = res.data;
        resolve(JSON.parse(data))
         
       },
       fail: function (res) {
        reject("上传失败")
        
       },
       complete: function (res) {
        uni.hideToast();
       }
      })
    })
  }
  chooseImage(){
    return new Promise((resolve,reject) => {
      uni.chooseImage({
        count: this.obj.count,//1, // 默认9
        sizeType: this.obj.sizeType,//['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: this.obj.sourceType,//['album','camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: function (res) {
          // console.log(res)
          resolve(res)
        },
        fail:function(){
          reject("选择文件失败")
        }
      })
    })
  }
}

使用实例

let object = {
  count:1,
  sizeType:['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  sourceType:['album','camera'],  // 可以指定来源是相册还是相机,默认二者都有
}
let result = await new Upload(object).uploadPic();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现分割提取页面所需内容
May 09 Javascript
Stop SQL Server
Jun 21 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
Aug 13 Javascript
jQuery圆形统计图开发实例
Jan 04 Javascript
javascript下使用Promise封装FileReader
Feb 19 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
js匿名函数使用&传参(实例)
Sep 08 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
Aug 27 Javascript
使用pkg打包ThinkJS项目的方法步骤
Dec 30 #Javascript
微信小程序实现一个简单swiper代码实例
Dec 30 #Javascript
JavaScript switch语句使用方法简介
Dec 30 #Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 #Javascript
详解Vue的watch中的immediate与watch是什么意思
Dec 30 #Javascript
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 #jQuery
Vue实现星级评价效果实例详解
Dec 30 #Javascript
You might like
人大复印资料处理程序_输入篇
2006/10/09 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php桥接模式应用案例分析
2019/10/23 PHP
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
django rest framework 自定义返回方式
2020/07/12 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
.NET面试问题集
2015/12/08 面试题
大学生年度自我鉴定
2013/10/31 职场文书
公司保密承诺书
2014/03/27 职场文书
大学生实习推荐信
2015/03/27 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书