关于微信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 相关文章推荐
FireFox下XML对象转化成字符串的解决方法
Dec 09 Javascript
jquery ui对话框实例代码
May 10 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
Nov 22 Javascript
JavaScript简单下拉菜单实例代码
Sep 07 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
浅析javascript的return语句
Dec 15 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
检查表单元素的值是否为空的实例代码
Jun 16 Javascript
jquery-mobile表单的创建方法详解
Nov 23 Javascript
JQuery学习总结【一】
Dec 01 Javascript
微信小程序自定义导航教程(兼容各种手机)
Dec 12 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
微信页面倒计时代码(解决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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
浅析php单例模式
2014/11/25 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
在html页面中包含共享页面的方法
2008/10/24 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
jquery 插件开发备注
2010/08/27 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
前端性能优化及技巧
2016/05/06 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
用Python实现KNN分类算法
2017/12/22 Python
python能做什么 python的含义
2019/10/12 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
python3中数组逆序输出方法
2020/12/01 Python
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
药店主任岗位责任制
2014/02/10 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis