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