关于微信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 相关文章推荐
extjs grid取到数据而不显示的解决
Dec 29 Javascript
JavaScript 通过模式匹配实现重载
Aug 12 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
Nov 11 Javascript
jquery键盘事件使用介绍
Nov 01 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
Feb 13 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
jquery图片倾斜层叠切换特效代码分享
Aug 27 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
基于vue实现分页效果
Nov 06 Javascript
学习使用ExpressJS 4.0中的新Router的用法
Nov 06 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
浅析php单例模式
2014/11/25 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
js 编写规范
2010/03/03 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
vue实现自定义多选按钮
2020/07/16 Javascript
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python isinstance函数介绍
2015/04/14 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Django框架模板用法入门教程
2019/11/04 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
奠基仪式主持词
2014/03/20 职场文书
工作鉴定评语
2014/05/04 职场文书
工作证明英文模板
2014/10/21 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android
Elasticsearch 索引操作和增删改查
2022/04/19 Python