Všetky balíky
Media Library for Laravel
Skupiny (buckets)
Pridajte kontrakt HasMedia a trait InteractsWithMedia na akýkoľvek model a deklarujte jeho skupiny v registerMediaBuckets():
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\MediaLibrary\Concerns\InteractsWithMedia;
use RoundlyConsulting\MediaLibrary\Contracts\HasMedia;
use RoundlyConsulting\MediaLibrary\Variants\VariantRegistrar;
final class User extends Model implements HasMedia
{
use InteractsWithMedia;
public function registerMediaBuckets(): void
{
$this->addMediaBucket('avatar')
->singleFile() // replaces the previous file on add
->acceptsMimeTypes(['image/jpeg', 'image/png', 'image/webp'])
->useDisk('cold') // originals on cold storage
->storingVariantsOnDisk('hot') // derivatives on hot storage
->private() // visibility: signed URLs only
->useFallbackUrl('https://example.com/avatar.png')
->registerVariants(function (VariantRegistrar $v): void {
$v->add('thumb')->fit('crop')->width(120)->height(120)->format('webp');
$v->add('display')->width(800)->format('webp')->quality(80)->queued();
});
$this->addMediaBucket('gallery')->useDisk('public');
}
}Builder skupiny
Každá skupina sa konfiguruje fluentným builderom:
$this->addMediaBucket('docs')
->singleFile() // keep only the latest file
->acceptsMimeTypes(['application/pdf'])
->useDisk('s3') // originals disk
->storingVariantsOnDisk('cdn') // variants disk
->public() // or ->private()
->useFallbackUrl('/img/doc.png') // returned by url() / getFirstMediaUrl() when empty
->responsiveWidths([480, 960, 1440])
->registerVariants(fn (VariantRegistrar $v) => $v->add('preview')->width(640));- singleFile() — drží len posledný súbor; pridanie nahradí predošlý (spustí sa preň MediaHasBeenDeleted).
- acceptsMimeTypes([...]) — obmedzí skupinu na mime allowlist. Skupina bez neho prijme akýkoľvek typ vrátane HTML a SVG — každej skupine s uploadmi od používateľov preto allowlist dajte.
- useDisk() / storingVariantsOnDisk() — pripne originály a varianty na konkrétne disky.
- public() / private() — viditeľnosť; súkromné médiá sa servírujú len cez podpísané URL.
- useFallbackUrl() — URL, ktoré vráti MediaLibrary::for($model)->url() (alebo getFirstMediaUrl()), keď je skupina prázdna.
- responsiveWidths() / registerVariants() — deklarujú responzívne šírky a varianty obrázkov.
- maxFileSize() / minDimensions() / maxDimensions() — obmedzenia, z ktorých vychádza aj MediaLibrary::rulesFor().
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.