微信公众号上传图片

最近要做一个上传行驶证给后台显示的功能     项目是微信公众号平台  当时第一想法是调微信上传图片接口   结果快做完了BOSS说让用组件做   。。。  在这里还是记录一下微信公众号上传图片

 

 

         首先又是坑的要死的签名,这里第一个前端配置就是:

wx.config({
        debug: false, // 因为在手机上测试没法打印,当debug为true时,所有的返回值都会在手机上alert出来
        appId: res.body.data.appid, // 必填,公众号唯一标识
        timestamp: res.body.data.timestamp, // 必填,生成签名的时间戳
        nonceStr: res.body.data.noncestr, // 必填,生成签名的随机串
        signature: res.body.data.sign,// 必填,签名
        jsApiList: ['chooseImage','uploadImage'] // 必填,需要使用的JS接口列表,需要用到什么接口就去开发者文档查看相应的字段名
    });

 

wx.config把微信公众号开发的一些参数配置在里面

debug:解决手机上无法console测试数据  true为现实

appid:后台传过来的appid

timestamp:后台传过来的时间戳,必须一致

nonceStr:同上  随机串

signature:签名,拿到一串数据进行SHA1加密后的签名

jsApiList:需要调用哪些接口  写在里面  ------ 我写的是选择图片和上传图片接口

 

    后台访问URL:

https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid="+PayConfigUtil.appid+"&secret="+PayConfigUtil.key;

这是获取access_token的接口   get请求2个参数过去      分别是appid跟appsecret

成功后会返回一个access_token给你

然后需要拿着access_token去访问:

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ acces +"&type=jsapi

同样  ,  给上之前接口返回的access_token会返回一个jsapi_ticket给你  这个东西一天只能请求2000次的样子

最后,把jsapi_ticket ,时间戳,随机串封装到一个String里

String str = "jsapi_ticket="+tickets+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+url2;  

url是你当前操作的url全路径,url上的参数也有带进去#号后的就不用了

用SHA1算法加密,这两步好坑- -   算法官方文档没有  网上也很多是很老的用不了  URL也是个坑 写错了一直调

public class SHA1 {

	 public static String getSignature(String string1) {
		 String signature="";
		 try
	       {
			 
	           MessageDigest crypt = MessageDigest.getInstance("SHA-1");
	           crypt.reset();
	           crypt.update(string1.getBytes("UTF-8"));
	           signature = byteToHex(crypt.digest());
	       }
	       catch (NoSuchAlgorithmException e)
	       {
	           e.printStackTrace();
	       }
	       catch (UnsupportedEncodingException e)
	       {
	           e.printStackTrace();
	       }
	       
	        System.out.println("签名1:"+signature);
	      // System.out.println("签名2:"+  SHA1Util.encode(string1) );
	  return signature;
	  
	 }
	
	    
	 
	private static String byteToHex(final byte[] hash) {
	    Formatter formatter = new Formatter();
	    for (byte b : hash)
	    {
	        formatter.format("%02x", b);
	    }
	    String result = formatter.toString();
	    formatter.close();
	    return result;
	}


    
    
}  

 

 

附上SHA1加密算法

 

把时间戳、随机串、签名返回到前端,包括APPID。

调起wx.chooseImage选择图片,可选择原图、压缩图,可选择相册、相机。

wx.chooseImage({
	    count: 1, // 默认9
	    sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
	    sourceType: ['camera','album'], // 可以指定来源是相册还是相机,默认二者都有
	    success: function (respos) {

	    	localIds = respos.localIds
	    	alert("JSON3"+localIds);
	    	
	    	wx.uploadImage({  
		        localId: localIds.toString(), // 需要上传的图片的本地ID,由chooseImage接口获得  
		        isShowProgressTips: 1, // 默认为1,显示进度提示  
		        success: function (resp) {                                        
		            mediaId = resp.serverId;     
		            alert("resp:"+resp);
		            
		            alert("mediaId:"+mediaId);
		            
		            wx.getLocalImgData({
				         localId: localIds.toString(), // 图片的localID
				         success: function (respo) {     
				              var localData = respo.localData; // localData是图片的base64数据,可以用img标签显示
				              if (localData.indexOf('data:image') != 0) {
		                        //判断是否有这样的头部
		                        localData = 'data:image/jpeg;base64,' +  localData
		                    }
		                   		localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')

				             this.img_url = localData;
				             alert(localData);
				         },fail:function(respo){
				         	
				          alert("显示失败:"+JSON.stringify(respo));
				         }
				     });
		            
		        },fail: function (error) {  
		            var picPath = '';  
		            //localIds = '';  
		            alert(JSON.stringify(error));          
		        }          
		    });  
		}
	});	

 

 

 

好吧我直接粘过来了  - -

 

wx.uploadImage是图片上传的接口   图片上传到微信的服务器  暂存3天,可再调用微信的下载图片接口进行下载

 

差不多快做完的时候就被BOSS废掉了     然后就做原生的上传 。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值