第一步:引入工作
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '<?=$signPackage["appId"];?>', // 必填,公众号的唯一标识
timestamp:'<?=$signPackage["timestamp"];?>', // 必填,生成签名的时间戳
nonceStr: '<?=$signPackage["nonceStr"];?>', // 必填,生成签名的随机串
signature: '<?=$signPackage["signature"];?>',// 必填,签名,见附录1
jsApiList: [
'checkJsApi',
'startRecord',
'stopRecord',
'translateVoice',
'scanQRCode',// 微信扫一扫接口
'openCard',
'getLocation',
'chooseImage',//拍照或选择图片
'uploadImage',//上传图片
'downloadImage',
'getLocalImgData',
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function() {
wx.checkJsApi({
jsApiList : ['scanQRCode',
'getLocation',
'chooseImage',//拍照或选择图片
'uploadImage',//上传图片
'downloadImage',
'getLocalImgData',],
success : function(res) {
// console.log(res);
}
});
});
</script>
第二步:前端将本地id与服务器id保存,并且相关联
var images = {
localId: [],
serverId: [],
arr:[]
};
wx.chooseImage({
count: 1, // 默认9
// sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function(res) {
images.localId = res.localIds;
var key = res.localIds;
wx.uploadImage({
localId: images.localId[i],
success: function(res) {
images.serverId.push(res.serverId);
images.arr[key] = res.serverId;
},
fail: function(res) {
alert(JSON.stringify(res));
}
});
}
}
});
第三步: 将图片id上传
$.ajax({
url:'/patient/visit/photo_save',
type:'post',
data:{
serverid:serverid,
el:el,//图片名称
},
async: false, // 使用同步操作
timeout : 50000, //超时时间:50秒
success:function (data) {
},
error:function (data) {
alert(JSON.stringify(data));
}
})
第四步:PHP后端
$photo = (strpos($serverid,'@@') !== false)?explode('@@',$serverid):array();
if(count($photo)){
$jssdk = new JSSDK();//需要引入公众号的jssdk文件
$access_token = $jssdk->getAccessToken();
foreach ($photo as $key=>$value){
if($value){
//根据微信JS接口上传了图片,会返回上面写的images.serverId(即media_id),填在下面即可
$str = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$value;
//获取微信“获取临时素材”接口返回来的内容(即刚上传的图片)
$a = file_get_contents($str);
$inspect->photo = $fail.$key.'.jpg';//新文件名
$resource = fopen("/images/medical/".$inspect->photo , 'w+');//以读写方式打开一个文件,若没有,则自动创建
fwrite($resource, $a);//将图片内容写入上述新建的文件
fclose($resource);//关闭资源
}
}
}