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