Open source
Media Library for Laravel
composer require roundly-consulting/media-library-for-laravelPrehľad
Natívna media library pre Laravel. Pripojte súbory k Eloquent modelom do pomenovaných skupín alebo ukladajte globálne médiá bez vlastníka — všetko v jednej polymorfnej tabuľke media, cez vlastný filesystem Laravelu na ľubovoľnom disku. Postará sa o všetko po nahratí: varianty obrázkov, responzívny srcset, rozmazané náhľady, súkromné streamovanie, deduplikáciu a CDN URL. Postavené len na oficiálnych závislostiach Laravelu a Symfony — žiadni externí poskytovatelia médií ani obrázkov.
Čo získate
Skupiny a globálne médiá
Pripojte súbory do pomenovaných skupín na akomkoľvek modeli alebo ukladajte globálne médiá bez vlastníka — v jednej polymorfnej tabuľke.
Viacdiskové úložisko
Ľubovoľný Laravel disk, so samostatnými diskami pre originály a varianty — originály na lacnom, varianty na rýchlom.
Varianty obrázkov
Natívne odvodeniny obrázkov cez ext-imagick s GD fallbackom. Synchrónne, voliteľne cez frontu.
Responzívne a LQIP
ThumbHash + Blurhash rozmazané náhľady a pripravené responzívne srcset pomocníky.
Súkromné URL a streaming
Jedno temporaryUrl() API, ktoré natívne podpíše URL alebo prejde na podpísanú streamovaciu routu.
Deduplikácia a CDN
Content-addressable úložisko s mazaním stráženým refcountom a pluginovateľný CDN generátor URL.
Fasáda, DI alebo akcie
Jedna fasáda MediaLibrary, injektovateľný manažér alebo jednoúčelové akcie — a nahrávací fake, ktorý sa nedotkne disku.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie migrácie a voliteľne konfigurácie a súboru streamovacej routy.
Konfigurácia
Každý konfiguračný kľúč a jeho predvolená hodnota — disky, image driver, dedup, náhľady, responzívne a CDN.
Skupiny (buckets)
Deklarujte pomenované skupiny médií na modeli — disky, mime allowlist, viditeľnosť, fallbacky a varianty.
Fasáda MediaLibrary
Prehľad fasády MediaLibrary — globálne pridanie, handle for($model), presun, kópia, náhrada, mazanie, drafty, varianty a pravidlá.
DI a akcie
Bez fasády: injektujte MediaLibraryManager alebo zavolajte jednoúčelovú akciu — mapa metód fasády na akcie.
Pridávanie médií
Pridávajte súbory z uploadov, requestov, URL, diskov, reťazcov, base64 či streamov cez MediaLibrary::for() a builder PendingFileAdd.
Bezpečnosť uploadu
Každý názov a typ, ktorý sa dostane do úložiska, je nedôveryhodný — rozpoznanie mime, bezpečné názvy, pravdivé prípony a strážené sťahovanie.
Čítanie médií
Čítajte médiá vlastníka cez MediaLibrary::for() — kolekcie, prvé médium, URL a dočasné URL — plus atribúty média.
Globálne médiá
Ukladajte celoaplikačné assety bez vlastníka — logá, zdieľané PDF — cez fasádu MediaLibrary.
Varianty obrázkov
Deklarujte zmenšené/prevedené odvodeniny, ktoré sa generujú automaticky; riaďte rozmery, formát, kvalitu a disk.
Responzívne obrázky
Vygenerujte rebrík šírok a získajte hotový srcset aj celý <img> tag s LQIP pozadím.
Náhľady (LQIP)
ThumbHash a Blurhash rozmazané náhľady plus zaznamenané rozmery v pixeloch, vypočítané pri pridaní.
URL, streaming a sťahovanie
Verejné URL, podpísané dočasné URL pre súkromné médiá a efektívna streamovacia routa s range podporou.
Deduplikácia a integrita
Content-addressable úložisko s mazaním stráženým refcountom a voliteľnou kontrolou checksumu pri čítaní.
Artisan príkazy
Pregenerujte varianty, upracte osirotené súbory, vyprázdnite skupiny, overte checksumy a vymažte expirované drafty.
Testovanie
Cez MediaLibrary::fake() zaznamenáte pridania, presuny aj mazania bez dotyku disku — alebo testujte end-to-end so Storage::fake().
Požiadavky
PHP 8.4+, Laravel 12 alebo 13, ext-fileinfo a ext-imagick alebo ext-gd pre varianty.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.