卡片pos機(jī)素材,利用微信公眾號(hào)提供的素材存儲(chǔ)當(dāng)免費(fèi)圖床用

 新聞資訊2  |   2023-06-14 09:27  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于卡片pos機(jī)素材,利用微信公眾號(hào)提供的素材存儲(chǔ)當(dāng)免費(fèi)圖床用的知識(shí),也有很多人為大家解答關(guān)于卡片pos機(jī)素材的問(wèn)題,今天pos機(jī)之家(www.dsth100338.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、卡片pos機(jī)素材

卡片pos機(jī)素材

當(dāng)自己開(kāi)發(fā)小程序時(shí),特別是電商類(lèi)的小程序,會(huì)存儲(chǔ)很多圖片,圖片多的話存儲(chǔ)成本就會(huì)增大,特別是當(dāng)用戶(hù)訪問(wèn)增多后,寬帶、流量也是不堪負(fù)重。

想法

微信公眾平臺(tái)提供了一個(gè)素材管理,里面可以上傳圖片、視頻、音頻等類(lèi)型的素材,那么是否可以將圖片素材上傳上去,獲取到url作為自己小程序項(xiàng)目的圖片服務(wù)器呢?當(dāng)然沒(méi)問(wèn)題!

根據(jù)開(kāi)發(fā)文檔的說(shuō)法:永久圖片素材新增后,將帶有URL返回給開(kāi)發(fā)者,開(kāi)發(fā)者可以在騰訊系域名內(nèi)使用(騰訊系域名外使用,圖片將被屏蔽)。簡(jiǎn)單來(lái)說(shuō)就是你只能在騰訊的平臺(tái)使用這個(gè)圖片素材URL,否則無(wú)法展示,因?yàn)橛蟹辣I鏈。

開(kāi)發(fā)

根據(jù)微信公眾平臺(tái)開(kāi)發(fā)文檔提供的【新增永久素材】接口可知,分為以下幾個(gè)步驟實(shí)現(xiàn)上傳圖片素材到微信服務(wù)器。

獲取access_token調(diào)用新增永久素材接口進(jìn)行上傳素材獲取到素材的永久URL

代碼如下

<?php

// 返回JSON

header("Content-type:application/json");

// 允許上傳的圖片后綴

$allowedExts = array("jpeg", "jpg", "png");

// 后綴名

if ($allowedExts[0] == 'jpeg') {

$hzm = 'jpg';

}else{

$hzm = $allowedExts[0];

}

// 獲取選擇的文件

$temp = explode(".", $_FileS["file"]["name"]);

// 獲取文件后綴名

$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/jpg")

|| ($_FILES["file"]["type"] == "image/pjpeg")

|| ($_FILES["file"]["type"] == "image/x-png")

|| ($_FILES["file"]["type"] == "image/png"))

&& ($_FILES["file"]["size"] < 10485760)

&& in_array($extension, $allowedExts)){

if ($_FILES["file"]["error"] > 0){

$result = array(

'code' => 201,

'msg' => '上傳失敗'.$_FILES["file"]["error"]

);

}else{

// 重命名

$new_file = date("Y-m-d")."-".rand(10000,99999).".".$hzm;

// 上傳到自己的服務(wù)器

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$new_file);

// 獲取真實(shí)地址

$filepath = realpath(dirname(__FILE__));

$upload_filepath = $filepath."/upload/".$new_file;

// 上傳到微信服務(wù)器

$imgurl = upload_img($upload_filepath);

// 驗(yàn)證上傳結(jié)果

if(strpos($imgurl,'http') !== false){

// 上傳成功

$result = array(

'code' => 200,

'msg' => '上傳成功',

'url' => $imgurl

);

// 刪除本地素材

unlink($upload_filepath);

}else{

// 上傳失敗

$result = array(

'code' => 202,

'msg' => '上傳失敗'

);

}

}

}

// 獲取access_token

function getToken(){

// appid和secret

$appid='填寫(xiě)你公眾號(hào)的appid';

$appsecret='填寫(xiě)你公眾號(hào)的appsecret';

// 讀取access_token

include './access_token.php';

// 判斷是否過(guò)期

if (time() > $access_token['expires']){

// 如果已經(jīng)過(guò)期就得重新獲取并緩存

$access_token = array();

$access_token['access_token'] = getNewToken($appid,$appsecret);

$access_token['expires']=time()+7000;

// 將數(shù)組寫(xiě)入php文件

$arr = '<?php'.PHP_EOL.'$access_token = '.var_export($access_token,true).';'.PHP_EOL.'?>';

$arrfile = fopen("./access_token.php","w");

fwrite($arrfile,$arr);

fclose($arrfile);

// 返回當(dāng)前的access_token

return $access_token['access_token'];

}else{

// 如果沒(méi)有過(guò)期就直接讀取緩存文件

return $access_token['access_token'];

}

}

// 獲取新的access_token

function getNewToken($appid,$appsecret){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";

$access_token_Arr = https_request($url);

return $access_token_Arr['access_token'];

}

// curl請(qǐng)求函數(shù)

function https_request ($url){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$out = curl_exec($ch);

curl_close($ch);

return json_decode($out,true);

}

// 上傳圖片素材到微信服務(wù)器

function upload_img($realpath){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.getToken().'&type=image');

$data = array(

'media' => new CURLFile($realpath)

);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$upimg = curl_exec($ch);

return json_decode($upimg)->url;

curl_close($ch);

}

// 返回JSON對(duì)象

echo json_encode($result,JSON_UNESCAPED_UNICODE);

?>

請(qǐng)求返回

{"media_id":"8IZhZUPXxsG_omeA5giO5By8VyHnjk7_oy0Co9jVWwxpgm-sqhx_Hkz_9rLVF9Ws","url":"http:\\/\\/mmbiz.qpic.cn\\/mmbiz_png\\/5zLSKyuEW2Kt5ZGZg7XUx05QyGOVFCpHqKic74qQP4gxzQJYXjwN4aGEiadtfUXax4fCXXV5ia1UnvSwdqxuqLCqA\\/0?wx_fmt=png","item":[]}

代碼解釋

首先要將圖片從客戶(hù)端(小程序端)上傳到你自己的服務(wù)器的upload目錄然后調(diào)用新增永久素材接口從upload目錄上傳到微信的服務(wù)器需要配置公眾號(hào)的appid和appsecret獲取access_token新增永久素材接口需要傳入access_token才可以調(diào)用access_token有效期是2小時(shí),每天最多獲取2000次access_token,超過(guò)次數(shù)就獲取不到,為了能夠保證一直都能獲取到新的token,不能每上傳一次就獲取一個(gè)新的access_token,量大的話一下子就把2000次用完了。access_token只要在2小時(shí)內(nèi)都可以隨便使用,所以需要進(jìn)行緩存access_token。getToken()這個(gè)函數(shù)就是緩存access_token的步驟(如果access_token已經(jīng)超過(guò)2小時(shí)就獲取新的access_token并緩存到本地,如果access_token還沒(méi)超過(guò)2小時(shí)直接讀取本地緩存的access_token)獲取access_token接口需要在公眾號(hào)后臺(tái)的安全中心配置白名單ip地址

注意

圖片鏈接只能在騰訊域名的平臺(tái)使用,在自建網(wǎng)站無(wú)法顯示,本文主要將的是小程序調(diào)用永久圖片素材,是可以用的!

擴(kuò)展

如果需要在非騰訊域名下使用永久圖片素材的URL,需要搭配反防盜鏈圖片跳板,類(lèi)似http://xxx.com/?imgurl=永久圖片素材URL來(lái)繞過(guò)防盜鏈,簡(jiǎn)單來(lái)說(shuō)就是一個(gè)圖片服務(wù)器代理吧。

也可以本地存儲(chǔ)一份,兩個(gè)鏈接做一個(gè)對(duì)應(yīng),本地只做存儲(chǔ),不做訪問(wèn),之后別的平臺(tái)還能用,微信的部分只在微信用,減少流量的訪問(wèn)。

以上就是關(guān)于卡片pos機(jī)素材,利用微信公眾號(hào)提供的素材存儲(chǔ)當(dāng)免費(fèi)圖床用的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于卡片pos機(jī)素材的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.dsth100338.com/newsone/67819.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。