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

Pridávanie médií

MediaLibrary::for($model) obmedzí pridávanie na jedného vlastníka. Každá metóda add* vracia builder PendingFileAdd; terminálne toBucket() zapíše súbor a vráti Media. Zdroje pokrývajú každý tvar vstupu:

use RoundlyConsulting\MediaLibrary\Facades\MediaLibrary;

$media = MediaLibrary::for($user);

$media->add($request->file('avatar'))->toBucket('avatar');            // UploadedFile or local path
$media->addFromRequest('avatar')->toBucket('avatar');                 // request upload by key
$media->addFromUrl('https://example.com/poster.png')->toBucket('gallery');
$media->addFromDisk('incoming/doc.pdf', 's3')->toBucket('gallery');
$media->addFromString($bytes)->usingFileName('note.txt')->toBucket('gallery');
$media->addFromBase64($base64)->toBucket('gallery');
$media->addFromStream($resource)->usingFileName('upload.bin')->toBucket('gallery');

Skratka cez trait

Trait InteractsWithMedia ponúka tie isté pridania priamo na modeli — idú cez manažéra fasády, takže ich vidí aj MediaLibrary::fake():

$user->addMedia($request->file('avatar'))->toMediaBucket('avatar');
$user->addMediaFromRequest('avatar')->toMediaBucket('avatar');
$user->addMultipleMediaFromRequest(['a', 'b']);                       // PendingFileAdd[] (keys without a file skipped)
$user->addMediaFromUrl($url);  $user->addMediaFromDisk($path, 's3');
$user->addMediaFromString($bytes);  $user->addMediaFromBase64($b64);  $user->addMediaFromStream($resource);

Builder PendingFileAdd

Builderom pred terminálnym volaním nastavíte názov, vlastné vlastnosti, disky, viditeľnosť a ďalšie:

$media = MediaLibrary::for($user)->add($request->file('avatar'))
    ->usingName('Profile photo')                 // display name
    ->usingFileName('avatar.jpg')                // stored filename (made safe, see Upload safety)
    ->withCustomProperties(['alt' => 'Jane'])    // arbitrary metadata
    ->withProperty('source', 'signup')           // one property at a time
    ->useDisk('cold')                            // override the bucket/config original disk
    ->storingVariantsOnDisk('hot')               // override the bucket/config variants disk
    ->withVisibility('private')                  // override the bucket default
    ->onQueue('media')                           // queue any queued variants on this queue
    ->asDraft()                                  // store as an unbound draft
    ->toBucket('avatar');                        // terminal: returns Media (toMediaBucket() is the same)

Terminál súbor zvaliduje ešte pred akýmkoľvek zápisom — mime allowlist skupiny, jej limit veľkosti (maxFileSize(), inak media.max_file_size) a pri obrázkoch minDimensions() / maxDimensions() — a pri chybe vyhodí typovanú výnimku: FileUnacceptableForBucket, FileDoesNotExist, DiskDoesNotExist alebo RemoteFileRejected (addFromUrl() s URL mimo http(s) alebo s telom nad limitom). Sú to tie isté limity, z ktorých vychádza MediaLibrary::rulesFor(), takže FormRequest a balík sa nikdy nerozídu.

Zdroj sa vždy len číta: lokálnu cestu, ktorú pridáte, balík nikdy nepresunie ani nezmaže — vždy uloží kópiu.

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.