如今沪袭,開發(fā)應(yīng)用時(shí)鸭廷,我們會(huì)從不斷增多的大量專用組件中選擇合適的偷卧。既然已經(jīng)有了
guzzlehttp/guzzle
組件,為什么還要浪費(fèi)時(shí)間自己編寫處理HTTP請(qǐng)求和響應(yīng)庫(kù)呢姆钉?
最近在做第三方登錄说订,用戶的頭像處理成了一個(gè)問(wèn)題。原來(lái)用戶系統(tǒng)中的頭像都是以文件的形式保存在我們自己的服務(wù)器中潮瓶。
第三方賬號(hào)的頭像是以 url 的形式傳入后臺(tái)克蚂,考慮先通過(guò)后臺(tái)將圖片下載在服務(wù)器,重命名后存表筋讨。這樣就與之前的用戶系統(tǒng)一致埃叭,不用改代碼。
安裝 guzzle 組件
安裝 guzzle 組件需要先安裝 composer
# Install Composer
curl -sS https://getcomposer.org/installer | php
使用 composer 安裝 guzzle
php composer.phar require guzzlehttp/guzzle
# 或者
composer require guzzlehttp/guzzle
用法
命名空間中引入 guzzle 依賴
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
保存頭像悉罕,這里使用 md5 加密 url 作為文件名赤屋,基本可以保證唯一性。后綴選擇 jpg壁袄,不知道會(huì)不會(huì)引起問(wèn)題类早,暫時(shí)先這么處理了。
if (!empty($avatar)) {
if (strpos($avatar, 'http://') === 0 || strpos($avatar, 'https://') === 0) {
$client = new Client(['verify' => false]); //忽略SSL錯(cuò)誤
$path = APP_ROOT . config('common.picture_path.user_avatar_path') . md5($avatar) . '.jpg';
$response = $client->get($avatar, ['save_to' => $path]); //保存遠(yuǎn)程url到文件
if ($response->getStatusCode() == 200) {
$avatar = md5($avatar) . '.jpg';
}
}
}
將生成后的文件名入庫(kù)即可嗜逻。
使用 curl-class 的 download 方法也可以實(shí)現(xiàn)相同的效果涩僻。