调用微信Js-SDK上传、预览图片

$(document).ready(function(){
    var url = location.href.split(‘#‘)[0];
    $.get(rootPath + "/wechat/member/user/getWechatConfig?url=" + url,"",function(data){
        wx.config({
            debug: false,
            appId: data.appId,
            nonceStr: data.nonceStr,
            signature: data.signature,
            timestamp: parseInt(data.timestamp),
            jsApiList: [
                ‘checkJsApi‘,
                ‘onMenuShareTimeline‘,
                ‘onMenuShareAppMessage‘,
                ‘onMenuShareQQ‘,
                ‘onMenuShareWeibo‘,
                ‘hideMenuItems‘,
                ‘showMenuItems‘,
                ‘hideAllNonBaseMenuItem‘,
                ‘showAllNonBaseMenuItem‘,
                ‘translateVoice‘,
                ‘startRecord‘,
                ‘stopRecord‘,
                ‘onRecordEnd‘,
                ‘playVoice‘,
                ‘pauseVoice‘,
                ‘stopVoice‘,
                ‘uploadVoice‘,
                ‘downloadVoice‘,
                ‘chooseImage‘,
                ‘previewImage‘,
                ‘uploadImage‘,
                ‘downloadImage‘,
                ‘getNetworkType‘,
                ‘openLocation‘,
                ‘getLocation‘,
                ‘hideOptionMenu‘,
                ‘showOptionMenu‘,
                ‘closeWindow‘,
                ‘scanQRCode‘,
                ‘chooseWXPay‘,
                ‘openProductSpecificView‘,
                ‘addCard‘,
                ‘chooseCard‘,
                ‘openCard‘
            ]
        });
    });

    var idCardPositive = "";//个人信息所在面
    var idCardOpposite = "";//国徽图案面
    var idCardHand = "";//手持证件照
    wx.ready(function () {
        /**
         * 选择图片
         */
        document.querySelector(‘#idCardPositive‘).onclick = function () {
            selectImage("idCardPositive");
        };

        document.querySelector(‘#idCardOpposite‘).onclick = function () {
            selectImage("idCardOpposite");
        };

        document.querySelector(‘#idCardHand‘).onclick = function () {
            selectImage("idCardHand");
        };

        function selectImage(id){
            wx.chooseImage({
              success: function (res) {
                //alert("选择成功:" + res.localIds);
                $("#" + id +"Img").attr("src",res.localIds);
                $("#" + id +"FileDiv").css("display","none");
                $("#" + id +"ImgDiv").css("display","block");
                wx.uploadImage({
                    localId: res.localIds.toString(),
                    isShowProgressTips:1,
                    success : function(res){
                        //alert("上传成功" + res.serverId);
                        $.get(rootPath + "/wechat/member/user/uploadImgToService?mediaId=" + res.serverId.toString(),"",function(result){
                            if(result == ""){
                                alert("下载失败");
                            }else{
                                if(id == "idCardPositive"){
                                    idCardPositive = result;
                                }else if(id == "idCardOpposite"){
                                    idCardOpposite = result;
                                }else if(id == "idCardHand"){
                                    idCardHand = result;
                                }
                            }
                        });
                        /*wx.downloadImage({
                              serverId: res.serverId.toString(),
                              isShowProgressTips: 1,
                              success: function(res){
                                  //alert("下载成功:" + res.localId);
                              }
                          });*/

                    },
                    fail: function(res){
                        alert("上传失败" + res.errMsg);
                    }
                });
              }
            });
        }

        /**
         * 预览图片
         */
        document.querySelector(‘#idCardPositiveImg‘).onclick = function () {
            if(idCardPositive != "")
                previewImage(idCardPositive);
        };

        document.querySelector(‘#idCardOppositeImg‘).onclick = function () {
            if(idCardOpposite != "")
                previewImage(idCardOpposite);
        };

        document.querySelector(‘#idCardHandImg‘).onclick = function () {
            if(idCardHand != "")
                previewImage(idCardHand);
        };
        function previewImage(imgUrl){
            wx.previewImage({
                current: imgUrl,
                urls: [imgUrl]
            });
        }

        document.querySelector(‘#idCardPositiveClose‘).onclick = function () {
            idCardPositive = "";
            $("#idCardPositiveImg").attr("src","");
            $("#idCardPositiveFileDiv").css("display","block");
            $("#idCardPositiveImgDiv").css("display","none");
        };

        document.querySelector(‘#idCardOppositeClose‘).onclick = function () {
            idCardOpposite = "";
            $("#idCardOppositeImg").attr("src","");
            $("#idCardOppositeFileDiv").css("display","block");
            $("#idCardOppositeImgDiv").css("display","none");
        };

        document.querySelector(‘#idCardHandClose‘).onclick = function () {
            idCardHand = "";
            $("#idCardHandImg").attr("src","");
            $("#idCardHandFileDiv").css("display","block");
            $("#idCardHandImgDiv").css("display","none");
        };

        /**
         * 提交
         */
        document.querySelector(‘#subBtn‘).onclick = function () {
            if(isNull($("#realName").val())){
                alert("请填写真实姓名");
                return false;
            }else if(isNull($("#idCard").val())){
                alert("请填写身份证号");
                return false;
            }else if(isNull($("#indate").val())){
                alert("请填写有效期限");
                return false;
            }else if(isNull(idCardPositive) || isNull(idCardOpposite) || isNull(idCardHand)){
                alert("请上传身份证照片");
                return false;
            }

              $.post(rootPath + "/wechat/member/user/identityAuthentication",{
                    realName:$("#realName").val(),//姓名
                    idCard:$("#idCard").val(),//身份证号码
                    idCardPositive:idCardPositive,//身份证正面图片
                    idCardOpposite:idCardOpposite,//国徽图案面
                    idCardHand:idCardHand,//手持身份证图片
                    openId:getOpenidByUrl()
                },function(result){
                    if(result.status){
                        alert("提交成功");
                        location.href = "verify.html";
                    }else{
                        alert("提交失败");
                    }
                }
            );
        };

        document.querySelector(‘#mapBtn‘).onclick = function () {
            wx.getLocation({
                success: function (res) {
                    var longitude = res.longitude; // 纬度,浮点数,范围为90 ~ -90
                    var latitude = res.latitude; // 经度,浮点数,范围为180 ~ -180。
                    var speed = res.speed; // 速度,以米/每秒计
                    var accuracy = res.accuracy; // 位置精度
                    //alert("纬度:" + longitude +"---"+ "经度:" + latitude  +"---"+ "速度:" + speed  +"---"+ "位置:" + accuracy);
                    wx.openLocation({
                        latitude: latitude,
                        longitude: longitude,
                        name: ‘我的位置‘,
                        address: accuracy,
                        scale: speed,
                        infoUrl: ‘http://weixin.qq.com‘
                    });
                },
                cancel: function (res) {
                    alert(‘取消获取地理位置‘);
                }
            });
        };
    });

    wx.error(function (res) {
        alert(res.errMsg);
    });
});

此API很坑爹,文档也不详

1.获取签名:

url必须是引入<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>的页面,最好在前台获取传到后台,后台写死不行,哪怕写的跟前台获取的一模一样

nonceStr、timestamp自己产生,wx.config依然用这个,必须;jsapi_ticket调https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi用Get获取

public static WechatConfig getWechatConfig(String url) throws Exception {
        WechatConfig wechatConfig = new WechatConfig();
        wechatConfig.setAppId(APPID);
        String nonceStr = UUID.randomUUID().toString();
        if (nonceStr.indexOf("-") != -1)
            nonceStr.replaceAll("-", "");
        wechatConfig.setNonceStr(nonceStr);
        String timestamp = Long.toString(System.currentTimeMillis() / 1000);
        wechatConfig.setTimestamp(timestamp);
        String str = "jsapi_ticket=" + getJsapiTicket().getTicket()
                + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url="
                + url;
        logger.info("str:" + str);

        MessageDigest crypt = MessageDigest.getInstance("SHA-1");
        crypt.reset();
        crypt.update(str.getBytes("UTF-8"));
        String signature = byteToHex(crypt.digest());
        wechatConfig.setSignature(signature);
        logger.info("wechatConfig:" + JsonMapper.toJsonString(wechatConfig));
        return wechatConfig;
    }

2.语法

最好少用jquery语法,因为有的支持IOS不支持安卓,例如var array = new Array(); var map = new Map();有的全不支持,例如$("#id").click(function(){alert("全都不支持!")})

时间: 2024-12-14 18:42:35

调用微信Js-SDK上传、预览图片的相关文章

微信js sdk上传多张图片

微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="11111111111111111111"; $secret="11111111111111111111"; $token = S('access_token'); if (!$token) { $res = file_get_contents("https://api.weixin.qq.c

上传预览图片

//上传预览 function showFile(data){ var thisfile = $(data).children('input')[0]; contentLoaded(thisfile) } function ProcessFile(items) { var file = $(items).prop ('files')[0]; var img = $(items).parent().parent().prev()[0]; if ( file) { var reader = new

官方demo修改后的webuploader上传预览图片(兼容IE8) github下载回来的有问题

注意!!!!! 不要使用GitHub上下载回来的webuploader.js,下载回来的webuploader.js会报错  fn 未定义 方便的话去看百度官网的demo 浏览器将其抓包获取webuploader.js文件 <!DOCTYPE html> <html lang="zh-CN"> <head>     <meta charset="UTF-8">     <title>WebUploader演

JS实现图片上传预览效果:方法一

<script type="text/javascript"> //处理file input加载的图片文件 $(document).ready(function(e) { //判断浏览器是否有FileReader接口 if(typeof FileReader =='undefined') { /*$("#images_show").css({'background':'none'}).html('亲,您的浏览器还不支持HTML5的FileReader接口

input file图片上传预览js实现

js代码: //头像上传预览 $("#up").change(function() { var $file = $(this); var fileObj = $file[0]; var windowURL = window.URL || window.webkitURL; var dataURL; var $img = $("#ImgPr"); if(fileObj && fileObj.files && fileObj.files[

来之不易的js图片上传预览代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

js:s上次预览,上传图片预览,图片上传预览

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

js前端实现多图图片上传预览

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试页面</title> <script type="text/javascript"> //下面用于

移动端 js 实现图片上传 预览

方法一: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试页面</title> <script type="text/javascript"> /

JavaScript 图片上传预览效果

图片上传预览是一种在图片上传之前对图片进行本地预览的技术.使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验.但随着浏览器安全性的提高,要实现图片上传预览也越来越困难.不过群众的智慧是无限的,网上已经有很多变通或先进的方法来实现.例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法.但在opera.safari和chrome还是没有办法实现本地预览,只能通过后台来支持预览.在研究了各种预览方法后,作为总结,写了这个程序,跟大家一起分享.上次写的简便无刷新文