softare development

How to Integrate Cloudinary with PHP

Cloudinary is a powerful cloud-based media management platform that allows you to upload, store, manage, manipulate, and deliver images and videos for your websites and apps. In this guide, I’ll walk you through the process of integrating Cloudinary with your PHP application.

Prerequisites

  • A Cloudinary account (sign up at cloudinary.com if you don’t have one)
  • PHP 7.0 or higher installed on your server
  • Composer (PHP dependency manager)
  • Basic knowledge of PHP

Step 1: Install the Cloudinary PHP SDK

First, you’ll need to install the official Cloudinary PHP SDK using Composer.

  1. Open your terminal or command prompt.
  2. Navigate to your project directory.
  3. Run the following command:
composer require cloudinary/cloudinary_php

This will install the Cloudinary PHP SDK and all its dependencies in your project’s vendor directory.

Step 2: Set Up Your Cloudinary Configuration

After installing the SDK, you need to configure it with your Cloudinary account credentials.

  1. Log in to your Cloudinary dashboard.
  2. From the dashboard, note down your:
  • Cloud name
  • API Key
  • API Secret

Important: Keep your API secret secure and never expose it in client-side code.

  1. Create a configuration file (e.g., cloudinary_config.php) in your project:
<?php
require 'vendor/autoload.php';

use Cloudinary\Configuration\Configuration;
use Cloudinary\Api\Upload\UploadApi;

// Configure Cloudinary
Configuration::instance([
    'cloud' => [
        'cloud_name' => 'your_cloud_name',
        'api_key' => 'your_api_key',
        'api_secret' => 'your_api_secret'
    ],
    'url' => [
        'secure' => true
    ]
]);

Replace 'your_cloud_name', 'your_api_key', and 'your_api_secret' with your actual Cloudinary credentials.

Step 3: Create a Simple Upload Form

Now, let’s create a simple HTML form to upload images to Cloudinary.

  1. Create a file named upload_form.php:
<!DOCTYPE html>
<html>
<head>
    <title>Cloudinary PHP Upload</title>
</head>
<body>
    <h1>Upload Image to Cloudinary</h1>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="image" accept="image/*" required>
        <button type="submit">Upload</button>
    </form>
</body>
</html>

Step 4: Create the Upload Handler

Next, create the PHP script that will handle the file upload to Cloudinary.

  1. Create a file named upload.php:
<?php
require 'cloudinary_config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['image'])) {
    try {
        // Get the temporary file path
        $filePath = $_FILES['image']['tmp_name'];

        // Upload the image to Cloudinary
        $upload = (new UploadApi())->upload($filePath, [
            'folder' => 'php_uploads/',
            'public_id' => 'img_' . time(),
            'overwrite' => true,
            'resource_type' => 'image'
        ]);

        // Display the uploaded image
        echo "<h1>Upload Successful!</h1>";
        echo "<p>Public ID: " . htmlspecialchars($upload['public_id']) . "</p>";
        echo "<p>Secure URL: " . htmlspecialchars($upload['secure_url']) . "</p>";
        echo "<img src='" . htmlspecialchars($upload['secure_url']) . "' width='500'>";

    } catch (Exception $e) {
        echo "<h1>Upload Failed</h1>";
        echo "<p>" . htmlspecialchars($e->getMessage()) . "</p>";
    }
} else {
    header('Location: upload_form.php');
    exit;
}

Step 5: Test Your Integration

  1. Start your local PHP server (if testing locally):
   php -S localhost:8000
  1. Open your browser and navigate to http://localhost:8000/upload_form.php
  2. Select an image file and click “Upload”
  3. If everything is configured correctly, you should see the uploaded image with its Cloudinary URL

Advanced Features

1. Image Transformations

Cloudinary allows you to apply transformations to your images on the fly. Here’s how to generate a transformed image URL:

$transformedUrl = cloudinary_url($upload['public_id'], [
    'width' => 300,
    'height' => 200,
    'crop' => 'fill',
    'effect' => 'sepia',
    'quality' => 'auto'
]);

echo "<img src='" . htmlspecialchars($transformedUrl) . "'>";

2. Deleting an Image

To delete an uploaded image:

<?php
require 'cloudinary_config.php';

$publicId = 'php_uploads/img_1234567890'; // Replace with your actual public ID

try {
    $result = (new UploadApi())->destroy($publicId);
    echo "Image deleted successfully: " . print_r($result, true);
} catch (Exception $e) {
    echo "Error deleting image: " . $e->getMessage();
}

3. Listing Resources

To list all uploaded images in a specific folder:

<?php
require 'cloudinary_config.php';

try {
    $resources = (new AdminApi())->assets([
        'type' => 'upload',
        'prefix' => 'php_uploads/',
        'max_results' => 10
    ]);

    echo "<h1>Uploaded Images</h1>";
    foreach ($resources['resources'] as $resource) {
        echo "<img src='" . htmlspecialchars($resource['secure_url']) . "' width='200'><br>";
        echo "Public ID: " . htmlspecialchars($resource['public_id']) . "<br><br>";
    }
} catch (Exception $e) {
    echo "Error listing resources: " . $e->getMessage();
}

Security Considerations

  1. Never expose your API secret in client-side code.
  2. For production, consider:
  • Storing credentials in environment variables
  • Implementing server-side validation for uploads
  • Setting upload limits (file size, type, etc.)
  1. Use Cloudinary’s signing mechanism for secure transformations if needed.

Conclusion

You’ve now successfully integrated Cloudinary with your PHP application! This gives you powerful media management capabilities including:

  • Secure cloud storage for your images and videos
  • On-the-fly image transformations
  • Automatic optimization and format conversion
  • CDN delivery for fast loading times

From here, you can explore more advanced features like:

  • Video uploads and transformations
  • Automatic tagging and moderation
  • AI-based image analysis
  • Advanced delivery options

Remember to check the official Cloudinary PHP SDK documentation for more detailed information and advanced usage.

Share
Published by
codeflare

Recent Posts

The Golden Ratio (φ)

1. What Is the Golden Ratio? The Golden Ratio, represented by the Greek letter φ (phi), is…

4 days ago

CSS Combinators

In CSS, combinators define relationships between selectors. Instead of selecting elements individually, combinators allow you to target elements based…

7 days ago

Boolean Algebra

Below is a comprehensive, beginner-friendly, yet deeply detailed guide to Boolean Algebra, complete with definitions, laws,…

1 week ago

Why It’s Difficult to Debug Other People’s Code (And what Can be Done About it)

Debugging your own code is hard enough — debugging someone else’s code is a whole…

1 week ago

Complete Git Commands

Git is a free, open-source distributed version control system created by Linus Torvalds.It helps developers: Learn how to…

2 weeks ago

Bubble Sort Algorithm

Bubble Sort is one of the simplest sorting algorithms in computer science. Although it’s not…

2 weeks ago