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

Nahrávanie súborov

Keď pole nastavíte na typ file alebo image, MediaFileResolver pripojí nahratý súbor ako médium k riadku odpovede — obrázky dostanú varianty, ostatné súbory prejdú bez zmeny a späť sa servírujú cez podpísané či dočasné URL (predvolene súkromne). Definujte pole:

Forms::define('kyc', 'Identity check')
    ->public()
    ->group('documents', 'Documents', function (GroupBuilder $g): void {
        $g->field('passport', 'Passport')->file()->rules(['required', 'file', 'max:10240']);
    })
    ->create();

Vstup pre súbor používa rovnakú vnorenú cestu ako každé iné pole — nezabudnite na multipart kódovanie:

<form method="POST" action="{{ route('kyc.store') }}" enctype="multipart/form-data">
    @csrf
    <input type="file" name="kyc[documents][passport]">
    <button type="submit">Upload</button>
</form>

Čítanie príloh

$g->field('passport', 'Passport')->file();

// the submission row is the media owner:
$row = Forms::find('kyc')->fields->firstWhere('key', 'passport')->submissions->first();
$row->attachments();               // Collection<Media>
$row->attachmentUrl();             // first attachment's URL: signed if private, public if public
$row->attachmentTemporaryUrl();    // always a short-lived signed URL

// or through the resolver:
$resolver = Forms::find('kyc')->fields->firstWhere('key', 'passport')->resolver();
$resolver->fromStorage();          // the stored media UUID
$resolver->url();                  // same as attachmentUrl()

Riadok ukladá ako hodnotu UUID média, takže fromStorage() aj čítač odpovedí vracajú toto UUID. Ďalšie pomocné metódy na riadku a resolveri:

$row->hasAttachments();            // bool
$row->attachmentUrls();            // list<string> — every attachment
$row->attachmentBucket();          // 'attachment' (config forms.media.bucket)

$resolver->temporaryUrl();         // short-lived signed URL via the resolver
$resolver->url($user);             // scope the lookup to one sender

Nastavenia nahrávania

Všetko nájdete v forms.media — skupinu médií, viditeľnosť, disk, povolené mime typy, limit veľkosti, responzívne šírky a platnosť podpísanej URL:

// config/forms.php
'media' => [
    'bucket' => 'attachment',
    'visibility' => 'private',                 // or 'public'
    'disk' => env('FORMS_MEDIA_DISK'),         // null = by visibility (see private_disk)
    'private_disk' => env('FORMS_MEDIA_PRIVATE_DISK', 'local'), // private uploads, never web-served
    'accepted_mime_types' => ['application/pdf', 'image/jpeg', 'image/png'],
    'max_file_size' => 10 * 1024 * 1024,       // bytes
    'responsive_widths' => [480, 960],         // null = the media default ladder
    'temporary_url_lifetime' => 10,            // minutes; null = the media default
],

Trvalé zmazanie (forceDelete) riadku odpovede odstráni aj jeho prílohy, takže po tvrdom mazaní nezostanú osirotené súbory. Mäkké mazanie súbory ponechá.

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.