DEV Community

Cover image for How to Integrate Cloudinary in Node.js
Devops Den
Devops Den

Posted on • Edited on

How to Integrate Cloudinary in Node.js

Managing media assets like images and videos efficiently is crucial for web applications, and Cloudinary offers an excellent solution to handle these assets seamlessly. In this post, we’ll walk through the integration process of Cloudinary in a Node.js project.

What Is Cloudinary?

Cloudinary is a cloud-based media management service that allows developers to easily store, transform, and deliver images and videos in a web-friendly format. With features like automatic image optimization, responsive transformations, and content delivery via CDN, Cloudinary has become a go-to choice for many developers.
Explore About Cloudinary Pricing

Prerequisites

Before diving in, ensure that you have:

  • Node.js installed on your system
  • A basic Node.js application setup
  • A Cloudinary account (you can sign up here if you don’t have one)

Step 1: Install Cloudinary SDK

npm install cloudinary

Enter fullscreen mode Exit fullscreen mode

Step 2: Configure Cloudinary

const cloudinary = require('cloudinary').v2;

cloudinary.config({
  cloud_name: 'YOUR_CLOUD_NAME',
  api_key: 'YOUR_API_KEY',
  api_secret: 'YOUR_API_SECRET',
});

module.exports = cloudinary;

Enter fullscreen mode Exit fullscreen mode

Step 3: Set Up Environment Variables

CLOUD_NAME=your-cloud-name
API_KEY=your-api-key
API_SECRET=your-api-secret

Enter fullscreen mode Exit fullscreen mode
npm install dotenv
Enter fullscreen mode Exit fullscreen mode
require('dotenv').config();

cloudinary.config({
  cloud_name: process.env.CLOUD_NAME,
  api_key: process.env.API_KEY,
  api_secret: process.env.API_SECRET,
});

Enter fullscreen mode Exit fullscreen mode

Step 4: Upload Images to Cloudinary

const cloudinary = require('./config');

async function uploadImage(imagePath) {
  try {
    const result = await cloudinary.uploader.upload(imagePath, {
      folder: 'samples', // Optional: specify the folder to store images
    });
    console.log('Image uploaded successfully:', result.url);
    return result.url;
  } catch (error) {
    console.error('Error uploading image:', error);
  }
}

// Example usage
uploadImage('path/to/your/image.jpg');

Enter fullscreen mode Exit fullscreen mode

Step 5: Transform Images with Cloudinary

const transformedImageUrl = cloudinary.url('sample.jpg', {
  width: 400,
  height: 300,
  crop: 'fill',
});

console.log('Transformed Image URL:', transformedImageUrl);

Enter fullscreen mode Exit fullscreen mode

Step 6: Handle File Uploads in Your Application

npm install multer

Enter fullscreen mode Exit fullscreen mode
const multer = require('multer');
const upload = multer({ dest: 'uploads/' }); // Temporary folder for uploaded files

app.post('/upload', upload.single('image'), async (req, res) => {
  try {
    const imagePath = req.file.path;
    const imageUrl = await uploadImage(imagePath);
    res.json({ imageUrl });
  } catch (error) {
    res.status(500).json({ error: 'Failed to upload image' });
  }
});

Enter fullscreen mode Exit fullscreen mode

Step 7: Optimize and Deliver Media Assets

const optimizedImageUrl = cloudinary.url('sample.jpg', {
  fetch_format: 'auto',
  quality: 'auto',
});

console.log('Optimized Image URL:', optimizedImageUrl);

Enter fullscreen mode Exit fullscreen mode

Conclusion

Integrating Cloudinary into your Node.js project is straightforward and opens up a world of media management features. Whether you’re dealing with images or videos, Cloudinary’s powerful API makes it easy to optimize, transform, and deliver assets efficiently.

Happy coding!

Top comments (0)