关于微信jssdk实现多图片上传的一点心得分享


Posted in Javascript onDecember 13, 2016

一.首先在common.js里封装一个函数,在需要调用jsSDK的页面引用此方法即可实现微信的信息配置

function signatureJSSDK() {
 var url = window.location.href.split('#')[0];//后台需要此页面的url来生成参数
 $.ajax({
 url:IPWeiXinJssdk,//调用后台接口,用后台返回的结果来进行微信接口的基础配置
 type:"post",
 dataType:"json",
 data:{"url":url},
 success:function (result) {
  if (result) {



 //后台接口调用成功,开始配置微信
  wx.config({
   debug : false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
   appId : result.appid, // 必填,公众号的唯一标识
   timestamp : result.timestamp, // 必填,生成签名的时间戳
   nonceStr : result.noncestr, // 必填,生成签名的随机串
   signature : result.signature,// 必填,签名,见附录1
   jsApiList : [// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
   /*
    * 所有要调用的 API 都要加到这个列表中
    * 这里以图像接口为例
    */
   "chooseImage",
   "previewImage",
   "uploadImage",
   "downloadImage" ]
  });
  }
 }
 })
}
//微信配置失败会执行wx.error函数
wx.error(function(res) {
 confirmBox2("wx.config.error");
 console.log(res);
});

二.在需要使用微信多图上传的页面编写如下代码

$(function () {
 signatureJSSDK();//微信jssdk配置
 // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
 // 也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
 wx.ready(function() {//微信配置成功执行此函数



 //localIdsArr 用来存放localIds,serverIdsArr用来存放serverIds
  var localIdsArr = [];var serverIdsArr = [];
  $(".BImgContent").click(function () {//点击事件触发微信拍照
  var that = $(this);
  wx.chooseImage({//调用微信拍照功能
   count: 1, // 默认9
   sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
   sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有
   success: function(res) {
   localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
   $(that).find(".ago").attr('src', localIds);//本地预览,localIds可以当做img标签的src属性
   wx.uploadImage({//用户预览的同时,上传至微信服务器
    localId:""+localIds,
    success: function(res) {
    var i =0;
    if($(that).hasClass("img1")){
     i = 1;
    }else if($(that).hasClass("img2")){
     i = 2;
    }else if($(that).hasClass("img3")){
     i = 3;
    }
    localIdsArr[i] = localIds;//将此图片的localIds存入数组
    serverIdsArr[i] = res.serverId;//将此图片在微信服务器上的werverID存入数组
    }
   });
   }
  });
  });
  $("#nextStep").click(function () {//用户点击下一步时,调用后台接口,传给后台serverIdsArr,后台可通过此id从微信服务器下载这些图片到后台
  var flag = 0;
  $(".ago").each(function (index,val) { //判断前台页面需要上传的部分是否都上传完
   var localIds = $(val).attr("src");
   if(localIds === "./img/photoAddContent1.png"){
   flag = 1;
   return false;
   }
  }); 
  if(flag === 0){//验证通过,传送serverID至后台
//   alert("开始发送serverID至后台");
   $(this).unbind("click");
   for(var i=0;i<serverIdsArr.length;i++){
   pushSeverId(serverIdsArr[i]);
   }
  }else{
   confirmBox2("请完善以上资料");
  }
  });
 });
 //将serverId发至后台,后台从微信服务器下载图片,然后反馈图片在我们服务器上的相对路径
 var urlList = [];
 function pushSeverId(serverId) {
  $.post('http://XXX.XXX', { serverId: serverId },function (text, status) {
  var obj = {"imgStr":"","imgType":""};
  obj.imgStr = text;//text为后台返回的图片url
  urlList.push(obj);
//  alert(JSON.stringify(urlList));//可以在手机上打印此数组,调试用,看看是否全部上传成功
  });
 }
 })

以上是我在使用微信jssdk,实现多图上传的代码,因为每个人的需求不尽相同,有的部分代码被我删除,希望能帮到大家!如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js parentElement和offsetParent之间的区别
Mar 23 Javascript
javascript之典型高阶函数应用介绍二
Jan 10 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
Oct 16 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
react使用antd表单赋值,用于修改弹框的操作
Oct 29 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
Dec 13 #Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 #Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 #Javascript
JavaScript实现倒计时跳转页面功能【实用】
Dec 13 #Javascript
Javascript实现倒计时(防页面刷新)实例
Dec 13 #Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
Dec 13 #Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
Dec 13 #Javascript
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
python实现爬山算法的思路详解
2019/04/09 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python内存映射文件读写方式
2020/04/24 Python
Python加速程序运行的方法
2020/07/29 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
遗嘱公证书标准样本
2014/04/08 职场文书
交通志愿者活动总结
2014/06/27 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
环保宣传语大全
2015/07/13 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技