Laravel Packages

Prevent Duplicate Files with the Dedupler Package for Laravel

Published
Prevent Duplicate Files with the Dedupler Package for Laravel image

Dedupler is a Laravel package that automatically prevents duplicate files using SHA-1 hashing and provides a polymorphic API for managing your attachments. If you want to ensure duplicate images are not uploaded multiple times in your application, this package might be able to help you with that:

// Using the Facade
 
/** @var \Illuminate\Http\UploadedFile $file */
/** @var \Maxkhim\Dedupler\Models\UniqueFile $uniqueFile */
$uniqueFile = Dedupler::storeFromUploadedFile($file);
 
$uniqueFile = Dedupler::storeFromPath($absolutePathToFile);
 
$uniqueFile = Dedupler::storeFromContent($content, 'direct_content_file.ext');

You can also use the package's trait on your model, which associates deduplicated images to your model:

namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Maxkhim\Dedupler\Traits\Deduplable;
 
class Post extends Model
{
use Deduplable;
}
 
$uniqueFile = $post->storeUploadedFile($file);
$uniqueFile = $post->storeLocalFile($absolutePathToFile);
$uniqueFile = $post->storeContentFile($content, 'direct_content_file.ext');
 
// Remove a file from a model
$post->detachUniqueFile($sha1_hash);

One note about this approach: multiple models might use the same image record if it corresponds to the same hash. Detaching the file from one model does not delete the image record. It only dissociates it from the specific model.

Main Features

  • Zero Duplicates - Automatic deduplication using SHA-1 hashing
  • Polymorphic Magic - Attach files to any model with ease
  • Storage Efficient - Save significant disk space
  • Simple API - Intuitive methods for attachment management
  • Laravel Native - Seamlessly integrates with Laravel's ecosystem

💻 You can get started with this package on GitHub: maxkhim/laravel-storage-dedupler

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Major performance improvements & security patches for Filament v4.12 and v5.7! image

Major performance improvements & security patches for Filament v4.12 and v5.7!

Read article
Laravel Boost Project Rules: Teach Agents Your Conventions image

Laravel Boost Project Rules: Teach Agents Your Conventions

Read article
Extract an Image's Dominant Color in Laravel image

Extract an Image's Dominant Color in Laravel

Read article
Image Dominant Color and HEIC Support in Laravel 13.24 image

Image Dominant Color and HEIC Support in Laravel 13.24

Read article
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article