PHP後端利用七牛快速搭建個人網站圖牀

七牛雲是國內領先的企業級公有云服務商,它所提供免費的對象存儲服務。訪問速度穩定,適宜中小型項目的個人網站利用搭建網站圖牀,從而節省服務器空間。

本文將對官方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;
}




以上便可完成圖牀搭建所需的上傳、下載(讀取)功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章