來說明怎麼在 CodeIgniter 透過 Imgur API 把檔案傳到 Imgur 上。

首先要在 Imgur 建立一個 Application,而 CodeIgniter 要設定好要上傳的 Controller 和 view

在使用 upload library 的時候注意上傳的路徑:

$upload_path='./uploads/';
$config['upload_path'] = $upload_path;

 

因為 imgur API 是抓某個路徑上傳到他們的 server,所以當圖片上傳後,就可以藉由以下的 code 將檔案上傳到 imgur 並取得 URL,這裡我們還會需要 Imgur APP 的 Client ID

$IMGUR_CLIENT_ID = YOUR_IMGUR_CLIENT_ID;
if ($this->upload->do_upload('image')) {
    $data = array('upload_data' => $this->upload->data());

    $image_source = file_get_contents($upload_path . $data["upload_data"] ["file_name"]);
    $postFields = array(
        'image' => base64_encode($image_source)
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Authorization: Client-ID ' . $IMGUR_CLIENT_ID
    ));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    $response = curl_exec($ch);
    curl_close($ch);
            // Decode API response to array
    $responseArr = json_decode($response);
    // Check image upload status
    if (!empty($responseArr
                ->data
                ->link)) {
            $imgurData = $responseArr;
            var_dump($imgurData);
        } else {
            $statusMsg = 'Image upload failed, please try again after some time.';
            echo $statusMsg;
        }
}

之後再把需要的值寫到資料庫就好了。

$imgurData 的內容大概會長這樣,可以依需求抓想要的值。

{ 
"data": { 
"id": "rwYHrBN", 
"title": null, 
"description": null, 
"datetime": 1649096564, 
"type": "image/jpeg", 
"animated": false, 
"width": 640, 
"height": 400, 
"size": 78307, 
"views": 0, 
"bandwidth": 0, 
"vote": null, 
"favorite": false, 
"nsfw": null, 
"section": null, 
"account_url": null, 
"account_id": 0, 
"is_ad": false, 
"in_most_viral": false, 
"has_sound": false, 
"tags": [], 
"ad_type": 0, 
"ad_url": "", 
"edited": "0", 
"in_gallery": false, 
"deletehash": "addXM7EZF2UPGlp", 
"name": "", 
"link": "https://i.imgur.com/rwYHrBN.jpg" 
}, 
"success": true, 
"status": 200 
}

 

參考:
How to Upload Image to Imgur via API using PHP