最近玩了微信客户端上传图片代码,可能很多朋友有需求,这里分享下自己的做法
客户端代码:
$(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 ); }