关于微信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 相关文章推荐
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
May 30 Javascript
javascript正则表达式中参数g(全局)的作用
Nov 11 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
控制input输入框中提示信息的显示和隐藏的方法
Feb 12 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
javascript实现支持移动设备画廊
Aug 24 Javascript
JS拖拽组件学习使用
Jan 19 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
Jul 22 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
完美解决浏览器跨域的几种方法(汇总)
May 08 Javascript
Django+vue跨域问题解决的详细步骤
Jan 20 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
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
php 404错误页面实现代码
2009/06/22 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python 函数返回值的示例代码
2019/03/11 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
英国计算机商店:Technextday
2019/12/28 全球购物
会计助理岗位职责
2014/02/17 职场文书
科研课题实施方案
2014/03/18 职场文书
《云房子》教学反思
2014/04/20 职场文书
迎国庆横幅标语
2014/10/08 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
python中redis包操作数据库的教程
2022/04/19 Python
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android