关于微信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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(2)
Dec 23 Javascript
用javascript编写的第一人称射击游戏
Feb 25 Javascript
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
JavaScript的面向对象方法以及差别
Mar 31 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
jQuery中extend函数详解
Feb 13 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 Javascript
详解使用uni-app开发微信小程序之登录模块
May 09 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
JavaScript实现滑块验证解锁
Jan 07 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
example2.php
2006/10/09 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
js Flash插入函数免激活代码
2009/03/31 Javascript
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
python封装对象实现时间效果
2020/04/23 Python
用Python编写web API的教程
2015/04/30 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
学习python可以干什么
2019/02/26 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
python如何从键盘获取输入实例
2020/06/18 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
什么是lambda函数
2013/09/17 面试题
2014年后勤工作总结
2014/11/18 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python