Забезпечте уникнення дублювання файлів за допомогою пакету Dedupler для Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 29 жовтня, 2025
Вам знайоме відчуття, коли в додатку з'являються однакові зображення? Пакет Dedupler для Laravel автоматично захистить вас від дублювання файлів, використовуючи SHA-1 хешування, та пропонує зручний API для управління вашими вкладеннями. Читайте далі, щоб дізнатися, як він може спростити ваше життя

Dedupler — це пакет для Laravel, який автоматично запобігає появі дублікатів файлів, використовуючи SHA-1 хешування, і пропонує поліморфний API для управління вашими вкладеннями. Якщо ви хочете уникнути повторного завантаження однакових зображень у вашій програмі, цей пакет стане вам у нагоді:

// Використання фасаду
 
/** @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');

Також ви можете використати трейти пакета у своїй моделі, щоб асоціювати дедупліковані зображення з конкретною моделлю:

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');
 
// Видалити файл з моделі
$post->detachUniqueFile($sha1_hash);

Зважте, що якщо кілька моделей використовують одне й те саме зображення з однаковим хешем, то від'єднання файлу від однієї моделі не видаляє запис зображення. Це лише знімає асоціацію з конкретною моделлю.

# Основні характеристики

💻 Розпочати роботу з цим пакетом можна на GitHub: maxkhim/laravel-storage-dedupler