Dedupler Uploader Plugin plugin screenshot
Dark mode ready
No multilingual support
Supports v5.x

Dedupler Uploader Plugin by Maxim Khimusov

Community

It's Filament plugin that prevents duplicate file in storage by detecting files with identical content before saving them to storage: Single copy Instead of storing multiple copies of the same file

Tags: Form Field Developer Tool
Supported versions:
5.x
Maxim Khimusov avatar Author: Maxim Khimusov

Package health

Automated checks of this plugin's Composer package

92 / 100
Security 85
Maintenance 100
Ecosystem 100
15 checks
  • Skipped: GitHub Actions pinned to SHA
  • Skipped: GitLab CI includes pinned to SHA
  • Passed: Open security advisories
  • Passed: Dependabot PR responsiveness — No open Dependabot PRs.
  • Skipped: Renovate MR responsiveness
  • Skipped: Dependabot or Renovate configured
  • Skipped: Dependency update cooldown configured
  • Failed: Provides a security policy — View details on Plumb
  • Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
  • Passed: Commit and release recency — Active: last commit 0 days ago; last release 1 days ago.
  • Passed: composer.lock not committed by library — composer.lock is absent from the released dist archive.
  • Passed: Dist archive is lean
  • Passed: Current Laravel version supported — Package dependencies resolve together with current Laravel 13.0.
  • Passed: Current PHP version supported — Constraint ^8.1 supports current PHP 8.5.
  • Skipped: Current Symfony version supported
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the filament/ namespace. Review the source and install at your own risk. Found malware or an unresolved security issue the author won't address? Report it .
Powered by Plumb Last scanned 3 days ago

Documentation

Latest Version Laravel License Filament

dedupler-banner.jpg

#Overview

filament-dedupler-uploader is plugin for Filament that prevents duplicate file storage by detecting files with identical content before saving them to storage. Instead of storing multiple copies of the same file, it uses content-based hashing (SHA1) to ensure each unique file is stored only once - regardless of how many times or by whom it is uploaded.

This is especially useful for applications where users frequently upload the same documents, images, or other files, helping to:

  • Save disk space by eliminating redundant copies
  • Maintain data integrity through content-based identification
  • Reduce storage costs especially for SSD storage in 2026 ;)

#Key Features

  • 🔍 Automatic deduplication - Files are compared by SHA1 hash before storage
  • 📦 Seamless integration - Based on Filament's FileUpload component
  • 🔗 Smart relationships - Attaches uniqueFiles records to Eloquent models via the Deduplable trait
  • 📋 Infolist components - Display uploaded files with metadata (original name, size, SHA1 hash, download)
  • 🗂️ Multiple file support - Handles single and multiple file uploads

#Requirements

  • PHP 8.1+
  • Laravel 12+
  • Filament 5.x

#🚀 Quick Start

#1. Install the package

composer require maxkhim/filament-dedupler-uploader
php artisan dedupler:install
php artisan dedupler:check

#2. Add the Plugin

use Maxkhim\FilamentDeduplerUploader\FilamentDeduplerUploaderPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugins([
            FilamentDeduplerUploaderPlugin::make()
        ]);
}

#3. Prepare Your Model

Your Eloquent model can use the Deduplable trait from laravel-storage-dedupler for simplicity linking files:

use Illuminate\Database\Eloquent\Model;
use Maxkhim\Dedupler\Traits\Deduplable;

class Document extends Model
{
    use Deduplable;

    // The trait provides the relationship and attachUniqueFile() method
}

#4. Use the DeduplerFileUploader Component

Based on Filament's FileUpload component

use Maxkhim\FilamentDeduplerUploader\Forms\Components\DeduplerFileUploader;

DeduplerFileUploader::make('attachment')
    ->multiple()

#5. Display Uploaded Files

Displays files in a table with original name, size, download button, and SHA1 hash, using standard Filament components under hood:

use Maxkhim\FilamentDeduplerUploader\Infolists\DeduplerFilesRepeatableEntry;
use Filament\Infolists\Components\Section;
use Filament\Infolists\Components\TextEntry;
use Filament\Infolists\Infolist;

public function infolist(Infolist $infolist): Infolist
{
    return $infolist->schema([
        Section::make('Uploaded Files')
            ->schema([
                DeduplerFilesRepeatableEntry::make()
                    ->label('Documents'),
            ]),
    ]);
}

#How It Works

#Upload Flow

  1. User uploads a file in the Filament form and saves record
  2. SHA1 hash is computed from the file content
  3. Deduplication check - If a file with the same hash already exists in storage, it is reused instead of being saved again
  4. Relationship attachment - The polymorphic uniqueFiles record attribute is attached to the model via the Deduplable trait
  5. Form submission - The file path and SHA1 hash is stored in the database

#Deletion Behavior

Physical file deletion is managed by the laravel-storage-dedupler package. When a file is removed from a model, the relationship is detached.

#License

The MIT License (MIT). Please see License File for more information.

#Credits

This package is built on top of maxkhim/laravel-storage-dedupler.

The author

Maxim Khimusov avatar Author: Maxim Khimusov

I am a backend developer with over 20 years of software development experience. I believe software is not something programmers build for themselves, but something we create for people

Plugins
1