最近玩了微信客戶端上傳圖片代碼,可能很多朋友有需求,這里分享下自己的做法
客戶端代碼:
$(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; // 返回圖片的服務(wù)器端ID $.ajax({ url:"http://www.ncyateng.com/wxjsupfile/", type:'post', data:{ media_id:serverId}, dataType:'json', success:function(data){ alert(data.msg); }, }); } }); //上傳圖片結(jié)束 } }); });//選擇圖片結(jié)束 });
服務(wù)器端代碼:
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格式的數(shù)據(jù) 文件下載 } } //調(diào)用上傳圖片保存 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上傳的網(wǎng)絡(luò)圖片保存到本地 public function save_pic_exists($url,$filename) //把網(wǎng)絡(luò)圖片保存到本地 { $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 ); }