NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Balík funguje s nulovou konfiguráciou — každý kľúč má predvolenú hodnotu a tie bežné sa dajú nastaviť cez env. Publikovaný config/media.php v plnom znení:

return [
    'disk' => env('MEDIA_DISK', 'public'),
    'variants_disk' => env('MEDIA_VARIANTS_DISK'),

    'media_model' => RoundlyConsulting\MediaLibrary\Models\Media::class,
    'table_name' => 'media',

    'queue_variants_by_default' => false,
    'queue_connection' => env('MEDIA_QUEUE_CONNECTION'),
    'queue_name' => env('MEDIA_QUEUE'),

    'image_driver' => env('MEDIA_IMAGE_DRIVER', 'imagick'),
    'variant' => [
        'quality' => 75,
        'background' => '#ffffff',
    ],

    'url_fallback_to_original' => false,
    'temporary_url_default_lifetime' => 5,

    'stream' => [
        'enabled' => env('MEDIA_STREAM_ENABLED', true),
        'route_prefix' => 'media',
        'middleware' => ['web'],
    ],

    'path_generator' => RoundlyConsulting\MediaLibrary\Support\DefaultPathGenerator::class,
    'file_namer' => RoundlyConsulting\MediaLibrary\Support\DefaultFileNamer::class,

    'default_visibility' => 'public',
    'max_file_size' => 1024 * 1024 * 256,

    'remote' => [
        'headers' => [],
        'timeout' => 30,
    ],

    'deduplicate' => true,
    'checksum_algorithm' => 'sha256',          // sha256|sha384|sha512|sha512/256|sha3-256|sha3-384|sha3-512
    'verify_checksum_on_read' => false,

    'placeholders' => [
        'thumbhash' => true,
        'blurhash' => true,
    ],

    'responsive' => [
        'widths' => [320, 640, 960, 1280, 1920],
    ],

    'drafts' => [
        'ttl' => 1440,
    ],

    'url_generator' => RoundlyConsulting\MediaLibrary\Support\DefaultUrlGenerator::class,
    'cdn' => [
        'enabled' => false,
        'base_url' => env('MEDIA_CDN_URL'),
        'cache_bust' => true,
        'disks' => [],
    ],
];

Všetky kľúče

KľúčPredvolenéÚčel
diskpublicPredvolený disk pre originály (MEDIA_DISK). Prázdna hodnota sa považuje za nenastavenú, takže platí public; hodnota, ktorá nie je reťazec, vyhodí výnimku.
variants_disknullPredvolený disk pre varianty (MEDIA_VARIANTS_DISK); null alebo prázdna hodnota (nenastavené) = disk originálu. Hodnota, ktorá nie je reťazec, vyhodí výnimku.
media_modelMedia::classEloquent model, ktorý ukladá médiá. Musí to byť model Media z balíka alebo jeho podtrieda; čokoľvek iné vyhodí InvalidConfigurationException.
table_namemediaDatabázová tabuľka modelu médií. Prázdna hodnota sa považuje za nenastavenú, takže platí media; hodnota, ktorá nie je reťazec, vyhodí výnimku.
queue_variants_by_defaultfalsePredvolene generovať varianty cez frontu.
queue_connectionnullPripojenie fronty pre GenerateVariantsJob (MEDIA_QUEUE_CONNECTION); null = predvolené pripojenie.
queue_namenullNázov fronty pre GenerateVariantsJob (MEDIA_QUEUE); null = predvolená fronta.
image_driverimagickimagick alebo gd (MEDIA_IMAGE_DRIVER); čokoľvek iné vyhodí výnimku. Ak je nastavený imagick, no rozšírenie chýba, použije sa gd.
variant.quality75Predvolená kvalita JPEG/WebP (1–100).
variant.background#ffffffFarba pozadia pri prevode priehľadného obrázka do JPEG.
url_fallback_to_originalfalseKeď sa getUrl() pýta na nevygenerovaný variant: vyhodiť výnimku (false) alebo vrátiť URL originálu (true).
temporary_url_default_lifetime5Predvolené minúty (aspoň 1) pre podpísané/dočasné URL, keď platnosť nezadáte.
stream.enabledtrueZaregistrovať podpísanú streamovaciu routu (MEDIA_STREAM_ENABLED, číta sa ako boolean; čokoľvek iné vyhodí výnimku).
stream.route_prefixmediaPrefix URI streamovacej routy.
stream.middleware['web']Middleware streamovacej routy; middleware signed od Laravelu sa pripojí vždy.
path_generatorDefaultPathGenerator::classŠtruktúra adresárov pre súbory média. Trieda, ktorá nie je PathGenerator, vyhodí výnimku pri vytvorení.
file_namerDefaultFileNamer::classPomenovanie originálov a variantov. Trieda, ktorá nie je FileNamer, vyhodí výnimku pri vytvorení.
default_visibilitypublicpublic alebo private pre nové médiá, ak ju skupina ani pridanie nenastaví. Čokoľvek iné vyhodí výnimku — preklep sa nikdy neuloží (čítal by sa ako public).
max_file_size256 MBLimit veľkosti pre celý balík — vynúti sa pri každom pridaní (aj sťahovaní z URL) a vychádzajú z neho odvodené pravidlá; maxFileSize() skupiny ho prepíše. null alebo prázdna hodnota (nenastavené) = bez limitu, inak aspoň 1 bajt.
remote.headers[]Ďalšie HTTP hlavičky (názov ⇒ hodnota) pre addFromUrl() / addMediaFromUrl().
remote.timeout30HTTP timeout v sekundách (aspoň 1) pre addFromUrl() / addMediaFromUrl().
deduplicatetrueZdieľať úložisko pre rovnaké bajty.
checksum_algorithmsha256Kontrolný súčet obsahu (kľúč dedup + integrita): sha256, sha384, sha512, sha512/256, sha3-256, sha3-384 alebo sha3-512 — čokoľvek iné vyhodí InvalidConfigurationException.
verify_checksum_on_readfalsePri čítaní prehašuje; pri nezhode vyhodí výnimku.
placeholders.thumbhashtrueVypočítať ThumbHash LQIP pri pridaní.
placeholders.blurhashtrueVypočítať Blurhash LQIP pri pridaní.
responsive.widths[320…1920]Predvolený responzívny srcset rebrík (kladné celé čísla), prepísateľný pre každú skupinu.
drafts.ttl1440Minúty (aspoň 1), kým je nenaviazaný draft mazateľný.
url_generatorDefaultUrlGenerator::classStratégia tvorby URL. Má prednosť pred CDN generátorom; trieda, ktorá nie je UrlGenerator, vyhodí výnimku pri vytvorení.
cdn.enabledfalsePrepísať verejné URL na CDN host.
cdn.base_urlnullZákladná URL CDN (MEDIA_CDN_URL), napr. https://cdn.example.com.
cdn.cache_busttruePridať ?v={updated_at} k verejným URL.
cdn.disks[]Obmedziť prepisovanie na CDN na tieto disky; [] = všetky verejné disky.

Každý prepínač typu bool sa všade, kde sa číta, vyhodnotí ako boolean: true/1/on/yes ho zapnú a false/0/off/no vypnú, takže prepínač napojený na .env v publikovanej konfigurácii sa správa presne tak, ako je napísaný. Prázdna hodnota (MEDIA_STREAM_ENABLED=) sa považuje za nenastavenú, takže platí predvolená. Akákoľvek iná hodnota (napríklad MEDIA_STREAM_ENABLED=disabled) vyhodí InvalidConfigurationException namiesto toho, aby sa potichu prečítala ako predvolená.

Rovnako prísne sa čítajú aj všetky ostatné nastavenia. Nenastavený kľúč — chýbajúci, null alebo prázdny ako MEDIA_VARIANTS_DISK= v .env — dostane predvolenú hodnotu a voliteľný kľúč (variants_disk, spojenie a názov fronty, max_file_size, cdn.base_url) zostane nenastavený; prázdne path_generator, file_namer či url_generator naviaže triedu z balíka. Celé čísla prijímajú int alebo obyčajný celočíselný reťazec (každá hodnota z env je reťazec), takže thirty či 5.5 vyhodí výnimku namiesto toho, aby sa z nich stala 0 — čo by pri remote.timeout znamenalo žiadny timeout. Výnimku vyhodí aj nereťazcový disk, fronta, názov tabuľky, prefix routy, farba pozadia či základná URL CDN, preklep v default_visibility, image_driver alebo checksum_algorithm či neplatná položka v zozname šírok, middleware, hlavičiek alebo CDN diskov. php artisan about zobrazí chybné nastavenie ako INVALID.

Prostredie (env)

Bežné prepínače sú riadené cez env, takže konfiguráciu publikujete len zriedka:

MEDIA_DISK=public
MEDIA_VARIANTS_DISK=s3
MEDIA_IMAGE_DRIVER=imagick
MEDIA_STREAM_ENABLED=true
MEDIA_CDN_URL=https://cdn.example.com

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.