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