Using a few lines of PHP to programmatically upload an image to Cloudinary
By Mike Street
I recently re-wrote Ale House Rock using 11ty to generate the list and individual pages for beer and breweries.
I wanted to host the images on a CDN, specifically one that could process and optimise images. Sponsorship slots have worked as I immediately reached for Cloudinary. Their free tier was more than enough for my requirements so I set about integrating into my processes.
I was expecting to spend the whole evening on this requirement, however it seems Cloudinary has an absolute kick-ass PHP SDK which, if you are using composer made it fairly straightforward to implement.
Install the SDK
Installing the SDK with composer requires one command:
composer require cloudinary/cloudinary_php
Include the Classes
Add the following to the top of your PHP file
use Cloudinary\Configuration\Configuration;
use Cloudinary\Api\Upload\UploadApi;
Initialise the SDK
I had a class set up, so in my __construct()
function, I used the following:
$this->cloudinary = Configuration::instance();
$this->cloudinary->cloud->cloudName = $config['cloudName'];
$this->cloudinary->cloud->apiKey = $config['apiKey'];
$this->cloudinary->cloud->apiSecret = $config['apiSecret'];
$this->cloudinary->url->secure = true;
The cloudName
, apiKey
and apiSecret
are all located at the top of the Cloudinary dashboard after you login.
Upload an Image
From there, uploading an image involves calling their Upload
class. I already had the image on my server and passed the path - Cloudinary did the rest.
I wanted it in a custom folder in my Cloudinary account, using the public_id
parameter I was able to do this
(new UploadApi())->upload('path/to/image.jpg', [
'public_id' => 'custom_path/and/folder.jpg'
]);
I was amazed at how little code was required to upload to Cloudinary - they've done a stirling job reducing the friction. Previous experience with trying to get an image anywhere was hell!
Will definitely be reaching for Cloudinary in the future.