七牛雲是國內領先的企業級公有云服務商,它所提供免費的對象存儲服務。訪問速度穩定,適宜中小型項目的個人網站利用搭建網站圖牀,從而節省服務器空間。
本文將對官方phpsdk使用、擴展,搭建自己網站的圖牀
安裝
七牛phpsdk安裝非常便捷。可以通過composer安裝,也可直接下載源碼包拷入項目。具體參考:https://developer.qiniu.com/kodo/sdk/php
創建存儲空間
1.註冊賬號後,在七牛個人中心進入對象存儲。
2.新建存儲空間,如不想讓他人使用自己空間的圖片,應選擇私有空間,更加安全。
3.選擇私有空間後,需記錄的信息有存儲空間名稱,測試域名(也可綁定自己的域名),公鑰、私鑰(在個人中心–密鑰管理查看)。
創建基礎類
官方提供了phpsdk,爲使用方便,應創建一個個人公共圖片上傳、下載類。基礎代碼如下:
<?php
namespace app\common\model;
use Qiniu\Auth;
use Qiniu\Processing\ImageUrlBuilder;
use Qiniu\Storage\UploadManager;
use think\Db;
use think\Model;
class Img extends Base
{
protected $accessKey = '這裏填公鑰';
protected $secretKey = '這裏填私鑰';
protected $temp_path = ROOT_PATH . 'public' . DS . 'uploads/temp'; //服務器暫存地址
protected $bucket = 'test'; //圖片存儲空間
protected $url = 'http://dfdsfsdf.bkt.clouddn.com'; //綁定域名
}
圖片上傳
圖片上傳採用先上傳至服務器暫存,得到上傳路徑。然後調用本方法,將服務器內圖片上傳至七牛,上傳成功後再刪掉暫存區圖片。
/*
* 向七牛上傳單張圖片
* @param 在本地服務器存儲路徑
* @return $status 1成功,2失敗
* @success key hash
* @error $msg*/
public function uploadOne($image_path)
{
$auth = new Auth($this->accessKey,$this->secretKey);
$bucket = $this->bucket; //選擇存儲空間
$token = $auth->uploadToken($bucket); //獲取token(私有空間每次上傳需要認證)
$upload_path = $this->temp_path.'/'.$image_path; //本地存儲路徑
$key = $image_path; //在本地服務器存儲路徑
$uploadMgr = new UploadManager();
list($res,$err) = $uploadMgr->putFile($token,$key,$upload_path); //上傳操作
$return = array();
if(empty($err)){ //上傳成功
//unlink($upload_path); 刪除服務器內文件(可延遲刪除)
$return = $res;
$return['path'] = $image_path;
$return['status'] = 1;
}else{ //上傳失敗
$return['msg'] = $err;
$return['status'] = 2;
}
return $return;
}
圖片上傳成功後,應根據本地數據庫寫回調,將返回的key和hash存入數據庫。
圖片讀取
利用上傳時獲取的key,得到圖片地址。
/*
* 從七牛獲取單張圖片原圖鏈接地址
* @param str $key
* @return str $url*/
public function getOneImg($key)
{
$auth = new Auth($this->accessKey,$this->secretKey);
$baseUrl = $this->url.'/'.$key;
$authUrl = $auth->privateDownloadUrl($baseUrl);
return $authUrl;
}
以上便可完成圖牀搭建所需的上傳、下載(讀取)功能。