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