PHPackages                             bizly/nova-field-cloudinary - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. bizly/nova-field-cloudinary

ActiveLibrary[Image &amp; Media](/categories/media)

bizly/nova-field-cloudinary
===========================

A Laravel Nova Image Field with Flysystem Adapter for storing and retrieving media from Cloudinary

v1.4.0(3y ago)02MITPHPPHP &gt;=7.0.0

Since Sep 22Pushed 3y agoCompare

[ Source](https://github.com/Bizly/nova-field-cloudinary)[ Packagist](https://packagist.org/packages/bizly/nova-field-cloudinary)[ RSS](/packages/bizly-nova-field-cloudinary/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (5)Versions (15)Used By (0)

Cloudinary Fields and Adapter for Laravel Nova
==============================================

[](#cloudinary-fields-and-adapter-for-laravel-nova)

A collection of Laravel Nova fields with a Flysystem Adapter for storing and retrieving media from Cloudinary.

This package will enable you to use the [Cloudinary](https://cloudinary.com) service to handle your Nova file uploads.

Installation
------------

[](#installation)

Install the package using composer

```
composer require silvanite/nova-field-cloudinary
```

Add the cloudinary disk to the filesystem config and set the environment variables for your Cloudinary account.

```
// config/filesystem.php
return [
    ...
    'disks' => [
        ...
        'cloudinary' => [
            'driver' => 'cloudinary',
            'api_key' => env('CLOUDINARY_API_KEY'),
            'api_secret' => env('CLOUDINARY_API_SECRET'),
            'cloud_name' => env('CLOUDINARY_CLOUD_NAME'),
        ]
    ]
];
```

Using the CloudinaryImage Field
-------------------------------

[](#using-the-cloudinaryimage-field)

Simply use the `CloudinaryImage` field in your Resource's fields instead of the standard Nova `Image` field. This component extends the default Image field so you can use it with all the same options as the standard field.

```
use Silvanite\NovaFieldCloudinary\Fields\CloudinaryImage;

public function fields(Request $request)
{
    return [
        ...
        CloudinaryImage::make('Profile Photo'),
    ]
}
```

This will essentially do the same as `Image::make()->disk('cloudinary')` but it will also serve resized and optimised preview and thumbnail images within the Nova UI itself. However if you don't want this you can just use the standard `Image` field.

To use images in your application you can either use the `cloudinary_image` helper or read the image using the `Storage` facade.

```
// Using the helper (with transformation)

return cloudinary_image($this->profile_photo, [
    "width" => 200,
    "height" => 200,
    "crop" => "fill",
    "gravity" => "auto",
])

// Using the Storage Facade (without transformation)

return Storage::disk('cloudinary')->url($this->profile_photo);

// Using the Storage Facade (with transformation)

return Storage::disk('cloudinary')->url([
    'public_id' => $this->profile_photo,
    'options' => [
        "width" => 200,
        "height" => 200,
        "crop" => "fill",
        "gravity" => "auto",
    ],
])
```

### Max file size

[](#max-file-size)

Cloudinary imposes maximum file sizes on images depending on your account plan. At the time of writing the free plan allows images up to 10mb.

If a successfully uploaded image is transformed by cloudinary and upscaled past this file size, the download of that image will fail with a 400 error on the front end.

This situation is especially likely to occur if working with animated GIF images which are typically quite large files at smaller resolutions, liable to upscaling by image processors.

Using the CloudinaryAudio Field
-------------------------------

[](#using-the-cloudinaryaudio-field)

Simply use the `CloudinaryAudio` field in your Resource's fields. This component extends `davidpiesse/nova-audio` which in turn extends the default Nova File field so you can use it with all the same options as the standard field.

```
use Silvanite\NovaFieldCloudinary\Fields\CloudinaryAudio;

public function fields(Request $request)
{
    return [
        ...
        CloudinaryAudio::make('Audio Source'),
    ]
}
```

This field sets the disk in use to `Cloudinary` and ensures the media is stored in the database field with the correct file extension. Further to this, the field sets the preview URL to use the appropriate path within Cloudinary so that the audio can be played back in the CMS.

To use the audio files in your application you can either use the `cloudinary_audio()` helper or read the audio file using the `Storage` facade. Note, Cloudinary stores both images and video together so if using the `Storage` facade, the `resource_type` should be set to `video` in the options array.

```
// Using the audio helper

return cloudinary_audio($this->audio_source);

// Using the Storage Facade

return Storage::disk('cloudinary')->url([
    'public_id' => $this->audio_source,
    'options' => [
        "resource_type" => "video",
    ],
])
```

Using the CloudinaryVideo Field
-------------------------------

[](#using-the-cloudinaryvideo-field)

Simply use the `CloudinaryVideo` field in your Resource's fields. This component extends the default Nova File field so you can use it with all the same options as the standard field.

```
use Silvanite\NovaFieldCloudinary\Fields\CloudinaryVideo;

public function fields(Request $request)
{
    return [
        ...
        CloudinaryVideo::make('Video Source'),
    ]
}
```

This field sets the disk in use to `Cloudinary` and ensures the media is stored in the database field with the correct file extension.

To use the video files in your application you can either use the `cloudinary_video()` helper or read the video file using the `Storage` facade.

```
// Using the video helper

return cloudinary_video($this->video_source);

// Using the Storage Facade

return Storage::disk('cloudinary')->url([
    'public_id' => $this->audio_source,
    'options' => [
        "resource_type" => "video",
    ],
])
```

Using the CloudinaryFile Field
------------------------------

[](#using-the-cloudinaryfile-field)

Simply use the `CloudinaryFile` field in your Resource's fields instead of the standard Nova `File` field. This component extends the default File field so you can use it with all the same options as the standard field.

```
use Silvanite\NovaFieldCloudinary\Fields\CloudinaryFile;

public function fields(Request $request)
{
    return [
        ...
        CloudinaryFile::make('Document'),
    ]
}
```

This field sets the disk in use to `Cloudinary` and ensures the media is stored in the database field with the correct file extension.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 60.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~134 days

Recently: every ~289 days

Total

12

Last Release

1313d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d5706ad44a2d4fa1972aebf843e256db2470614201c6e14ea3e7ca4dd3520f05?d=identicon)[torrancemiller](/maintainers/torrancemiller)

---

Top Contributors

[![m2de](https://avatars.githubusercontent.com/u/17720020?v=4)](https://github.com/m2de "m2de (39 commits)")[![crumb1e](https://avatars.githubusercontent.com/u/18497168?v=4)](https://github.com/crumb1e "crumb1e (13 commits)")[![lukebouch](https://avatars.githubusercontent.com/u/25229123?v=4)](https://github.com/lukebouch "lukebouch (10 commits)")[![torrancemiller](https://avatars.githubusercontent.com/u/5090876?v=4)](https://github.com/torrancemiller "torrancemiller (2 commits)")

---

Tags

laravelimagesmediacloudinaryfieldnova

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/bizly-nova-field-cloudinary/health.svg)

```
[![Health](https://phpackages.com/badges/bizly-nova-field-cloudinary/health.svg)](https://phpackages.com/packages/bizly-nova-field-cloudinary)
```

###  Alternatives

[silvanite/nova-field-cloudinary

A Laravel Nova Image Field with Flysystem Adapter for storing and retrieving media from Cloudinary

2772.0k3](/packages/silvanite-nova-field-cloudinary)[classic-o/nova-media-library

Tool and field that will let you managing files and add them to the posts

154172.0k](/packages/classic-o-nova-media-library)[stepanenko3/nova-media-field

A Laravel Nova field for laravel-medilibrary.

1717.5k](/packages/stepanenko3-nova-media-field)[mostafaznv/nova-video

Video Field for Laravel Nova

22398.0k1](/packages/mostafaznv-nova-video)[ayvazyan10/nova-imagic

Imagic is a Laravel Nova field package that allows for image manipulation capabilities, such as cropping, resizing, quality adjustment, and WebP conversion. It utilizes the powerful Intervention Image class for image manipulation.

144.3k1](/packages/ayvazyan10-nova-imagic)[okipa/laravel-medialibrary-ext

Extra features for spatie/laravel-medialibrary package.

1011.2k](/packages/okipa-laravel-medialibrary-ext)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
