服务器获得微信公众号上传图片

时间:2018-03-20 22:27:11 类型:PHP
字号:    

最近玩了微信客户端上传图片代码,可能很多朋友有需求,这里分享下自己的做法

客户端代码:


$(document).ready(function(){
$("#paizhao").on("click",function(){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
//$("#imgs").attr("src",localIds);
document.getElementById("imgs").src = localIds;
localId = localIds.toString();
wx.uploadImage({
    localId:localId, // 需要上传的图片的本地ID,由chooseImage接口获得
    isShowProgressTips: 1, // 默认为1,显示进度提示
    success: function (res) {
        var serverId = res.serverId; // 返回图片的服务器端ID
          	$.ajax({
                     url:"http://www.ncyateng.com/wxjsupfile/",
                     type:'post',
                     data:{ media_id:serverId},
                   	 dataType:'json',
                     success:function(data){
                        alert(data.msg);
                    },
                 });

    }
});
//上传图片结束
}
});

});//选择图片结束
});


服务器端代码:

namespace app\controller;
use think\Controller;
class Wxjsupfile extends Controller
{
	public function _initialize(){
		$this->weixin = new \Weixin();  //加载 /extend/Weixin类
	}
    public function index()
    {
		
    	$serverid = $this->request->param('media_id');
	   	$pic_info =  $this->weixin->getPic($serverid);
	    return json($pic_info);  //返回json格式的数据 文件下载

    }
    
}

//调用上传图片保存
	public function getPic($serverid)
    {
         $access_token = $this->get_access_token();
         $filename = date('Ymdgis').random_string().".jpg";
         $url="https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$serverid ;
         $pic_info =  $this->save_pic_exists($url,$filename);
         return $pic_info;
    }

	//把微信JSSDK上传的网络图片保存到本地
	public function save_pic_exists($url,$filename)  //把网络图片保存到本地
    {              
       $save_dir = ROOT_PATH."public/uploads/image/";
       $ch=curl_init();
       curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch,CURLOPT_TIMEOUT,500);
       curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
       curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
       //curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
       curl_setopt($ch,CURLOPT_URL,$url);
       $res=curl_exec($ch);
       file_put_contents($save_dir.$filename, $res);
       return array(
               'file_name' => $filename,
               'save_path' => $save_dir.$filename,
               'error'     => 0
            );
    }