使用七牛雲PHP-SDK將網上圖片上傳到自己的七牛雲空間

weixin_33758863發表於2017-10-09

七牛雲是一個便捷的資料雲端儲存平臺。通過官方社群社群SDK你可以方便通過程式上傳檔案到自己的空間中。下面的這個小 Demo 是通過 七牛官方 PHP-SDK 將一個網上的圖片url 上傳到自己的七牛 Bucket 中。這個 Demo 的關鍵點是使用 curl 讀取圖片內容,然後在將讀取的圖片內容通過指定 MIME 上傳到指定 Bucket 即可。

  • 安裝 七牛雲 PHP-SDK
git clone https://github.com/qiniu/php-sdk.git

  • Demo 的檔案結構
147698-94800bf3b07d87e6.PNG
image
  • Demo 程式碼

<?php

require_once __DIR__ . './autoload.php';

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

class uploadImage {

    public $access_key;
    public $secret_key;
    public $bucket;

    public function __construct()
    {
        $this->access_key = '填寫你的七牛雲 access_key';
        $this->secret_key = '填寫你的七牛雲 secret_key';
        $this->bucket = '填寫你的七牛雲 bucket';
    }

    /*
     * @ 上傳遠端圖片
     * @ 2017/10/09
     * @ 雨醉風塵
     * */
    public function uploadImg($imgUrl)
    {
        #讀取網上圖片內容
        $imageData = self::getImgData($imgUrl);

        $auth  = new Auth($this->access_key, $this->secret_key); 
        
        $token = $auth->uploadToken($this->bucket);

        #上傳的檔名
        $key   = 'imgUrl_'.microtime(true).'.jpg';
        $up    = new UploadManager();
        $mime  = 'image/jpeg';

        list($rest, $err) = $up->put($token, $key, $imageData, null, $mime);
        if ($err) {
            echo '<pre>';
            print_r($err);
        } else {
            echo '<pre>';
            print_r($rest);
            $domain = '上傳 Bucket 外鏈預設';
            
            #獲取上傳到七牛雲的圖片url
            $uploadUrl = $domain.$rest['key'];
            
            echo "<img src=$uploadUrl>";   //圖片顯示
        }
    }

    protected function getImgData($imgUrl)
    {
        $ch = curl_init($imgUrl);

        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

        //讀取圖片資訊
        $rawData = curl_exec($ch);
        curl_close($ch);

        //讀取檔案到本地
        //file_put_contents('aa.png',$rawData);

        return $rawData;
    }
}

$upTest = new uploadImage();

$uploadImageUrl = "http://s3.cn.bing.net/th?id=OJ.z0O2eyRKKpwmZQ&pid=MSNJVFeeds";

$upTest->uploadImg($uploadImageUrl);

  • 程式執行結果
147698-dcae7de5d2101758.PNG
image
  • 在 七牛雲 後臺檢視 是否存在 imgUrl_1507562883.5045.jpg 檔案
147698-b994d6763e5c1552.png
image

-:)

相關文章