NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
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 kryptomien

Odoslaní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.