NETipar Magyarország Kapcsolat

Chunky for Laravel

Nagy fájlok megbízható feltöltése lassú vagy megszakadó kapcsolaton is. A fájl darabokban megy fel, oldalváltáskor sem áll le, és ha megszakad, a fájlt újra kiválasztva ott folytatódik, ahol elakadt. Alapból nem kell hozzá queue worker és broadcasting.

$ composer require netipar/laravel-chunky

Frontend: npm install @netipar/chunky-core, vagy a Vue 3-, React- és Alpine.js-kliens.

resources/js/upload.ts TypeScript
import { manager, configure } from '@netipar/chunky-core';

configure({
    baseUrl: '/api/chunky',
    headers: { 'X-CSRF-TOKEN': csrfToken },
});

const uploader = manager.upload(file, { profile: 'avatar' });

uploader.subscribe((state) => {
    console.log(state.status, state.progress, state.etaSeconds);
});

const result = await uploader.upload(); // resolves once assembled
console.log(result.file?.url, result.payload?.media_id);
Legújabb verzió
v1.0.0
2026. augusztus 6.
Követelmények
PHP 8.3+
Laravel 12 és 13
Licenc
MIT
üzleti célra is szabadon
Letöltések
2 771
Packagist, összesen

Mire jó?

Feltöltés, ami nem kezdődik elölről

Videó, tervrajz vagy archívum: a nagy fájl akkor is felér, ha közben megszakad a kapcsolat.

  • Folytatható feltöltés

    A szerver darabonként tartja nyilván a feltöltést. Ha ugyanazt a fájlt újra elindítják, az ujjlenyomata alapján ott folytatja, ahol abbamaradt.

    Így működik: fájl-ujjlenyomat az indításkor

  • Oldalváltáskor sem áll le

    A feltöltést egy modulszintű kezelő birtokolja, így SPA-navigációnál vagy komponenscserénél sem szakad meg.

    Így működik: manager.upload()

  • Infrastruktúra nélkül is kész

    Alapbeállítással a 256 MB alatti fájlok még a kérésen belül összeállnak, az eredmény a válaszban érkezik. Worker és broadcasting csak a skálázáshoz kell.

    Így működik: assembly.mode = auto

  • Közvetlenül S3-ba

    A darabok előre aláírt URL-eken egyenesen az S3-ba mennek. A PHP nem is látja a bájtokat, és nincs külön összefűzési lépés.

    Így működik: transport(): 'direct_s3'

  • Ellenőrzött épség

    Kérésre a teljes fájl SHA-256 ellenőrzőösszege is elkészül, és a szerver az összeállított fájlt ehhez méri.

    Így működik: fileChecksum: true

  • Biztonságos alapértelmezés

    Bejelentkezett felhasználónál a feltöltés a feltöltőé: más nem kérdezheti le, nem szakíthatja meg, és nem küldhet bele darabot. Idegen feltöltés lekérdezésére 404 a válasz, így az azonosítók nem találgathatók.

    Így működik: Authorizer

Egy JavaScript-motor, négy keretrendszer:

  • Mag @netipar/chunky-core Feltöltés, szünet, folytatás, köteg, előnézet
  • Vue 3 @netipar/chunky-vue3 useUpload, UploadTray, ChunkDropzone
  • React @netipar/chunky-react ChunkyProvider, useUpload
  • Alpine.js @netipar/chunky-alpine chunkyUpload komponens
  • Livewire <livewire:chunky-upload /> Kész widget az Alpine-kliensre építve

Így működik

A feltöltés útja az első darabtól a kész fájlig

  1. 1

    Indítás

    Azonosító, darabméret és darabszám; egyező ujjlenyomatnál folytatás.

    POST /upload
  2. 2

    Darabok

    Párhuzamosan mennek fel, átmeneti hibánál újrapróbálva.

    POST /upload/{id}/chunks
  3. 3

    Összeállítás

    Streamelve, a fájl memóriába töltése nélkül; szinkron vagy sorba állítva.

    assembly.mode
  4. 4

    A te logikád

    A feltöltési profil dönt: hová kerül a fájl, és mi történjen utána.

    completed()
  5. 5

    Eredmény

    A fájl és a payload a válaszban érkezik; sorba állításnál a kliens magától lekérdezi.

    await uploader.upload()

Tizenegy Laravel-esemény jelzi a feltöltés életútját. A broadcasting alapból ki van kapcsolva; bekapcsolva a gyakori, darabonkénti eseményeket kihagyja, és belső útvonalak nélkül küld.

Kódpéldák

A te frontended, ugyanaz a motor

Magyar dokumentáció (új lapon nyílik)
resources/js/components/AvatarUpload.vue Vue
<script setup lang="ts">
import { useUpload } from '@netipar/chunky-vue3';

const { start, state, previewUrl } = useUpload();
const onPick = (e: Event) =>
    start((e.target as HTMLInputElement).files![0], { profile: 'avatar' });
</script>

<template>
    <input type="file" @change="onPick" />
    <img v-if="previewUrl" :src="previewUrl" alt="" />
    <progress v-if="state" :value="state.progress" max="100" />
</template>

Minőség

Tesztelve, verziózva, dokumentálva

Kompatibilitás

Minden változtatás után mind a hat párosításon lefut a tesztcsomag (GitHub Actions).

A tesztelt PHP- és Laravel-verziók
PHP Laravel 12 Laravel 13
8.3
8.4
8.5

Amire számíthatsz

  • 175 Pest- és 64 Vitest-teszt
  • PHPStan legszigorúbb szintje és szigorú TypeScript
  • Adatbázis- és fájlrendszer-driver ugyanazzal a tesztcsomaggal
  • chunky:doctor: élő egészségellenőrzés, CI- és deploykapuként is
  • Protokoll-leírás angolul és magyarul, OpenAPI-specifikáció
  • Laravel Boost skillek a backendhez és a frontendhez
  1. v1.0.0

    Az alapoktól újraírt, stabil API: feltöltési profilok, szinkron összeállítás alapból, oldalváltás-biztos kezelő, közvetlen S3-feltöltés és SHA-256-ellenőrzés.

  2. v0.22.6

    Javítás: típushiba, ha a darabméret a .env-ből érkezik.

  3. v0.22.5

    Az npm-kliensek újra a Composer-csomaggal azonos verzión jelennek meg.

  4. v0.22.4

    A migrációk sorrendjének javítása MySQL-en és PostgreSQL-en.

Az első kiadás 2026. március 8-án jelent meg, eddig összesen 37 kiadás készült. Frissítés 0.x-ről: UPGRADE.md (új lapon nyílik)

Élesben

TARR és NETipar Office

A TARR tartalomkezelőjében a média- és a dokumentumfeltöltést, a NETipar Office-ban a kártyák és a kommentek csatolmányait kezeli.

A TARR-esettanulmány

</Fájlkezelés>

Nagy fájlokkal dolgozik a rendszeretek?

Videó, tervrajz vagy archívum: a megbízható feltöltést és a tárolást a ti rendszeretekbe is beépítjük.

Beszéljünk a projektedről 

Nem szükséges kész specifikáció. Elég, ha leírod, mit szeretnétek megoldani.

Visszajelzések

Ügyfeleink mondták rólunk

Büszkék vagyunk arra, hogy ügyfeleink hosszú távon is elégedettek a közös munkával. Íme néhány visszajelzés, ami igazán számít.

5,0 átlag az 5-ből, 8 Google-értékelés
  • Megbízható partner Valódi eredmények, hosszú távú együttműködések
  • Szakértő csapat Komplex projektek, átlátható folyamatok
  • Ügyfélközpontú szemlélet Mindig a közös célokra fókuszálunk
Kapcsolat

Az alábbi vélemények ügyfeleinktől származó, valós visszajelzések. Ez csak egy kis ízelítő, a teljes listát Google-értékeléseinknél találod.

László Szilágyi

Google-értékelés

5 csillag az 5-ből

Rugalmas és nagyon profi csapat. Személyre szabott megoldásokkal az egyedi igényeket is kiválóan teljesítik.

Norbert Szabo

Google-értékelés

5 csillag az 5-ből

Kiemelkedően magas minőség proaktivitással. Néha szinte már-már gondolatolvasással. Egy nagyon alap szintű specifikációt követeően kérdések garmadával - olyanokkal, amelyek nekünk eszünkbe se jutottak volna - elvezettek bennünket a jól átlátható rendszer felé. Majd olyan magas szintű fejlesztést és eredményt kaptunk mind fron-end mind back-end szinten, amire mi sem számítottunk. Innen kezdve csak velük dolgozunk. :) Köszönjük!

Zoltán Tolnay

Google-értékelés

5 csillag az 5-ből

Profi, lelkiismeretes, agilis csapat - komplex weboldalfejlesztés és beléptetőrendszer miatt kerestem meg őket. Jó munkát végeztek, mindenkinek ajálom őket!

csaboch

Google-értékelés

5 csillag az 5-ből

Egyedi bútortervezéssel foglalkozom és ehhez készítettek komplett arculatot és weboldalt. Minőségi eredményt kaptam.

Attila Szabó

Google-értékelés

5 csillag az 5-ből

Egyedi CRM rendszert készítettek számomra, amivel nagyon elégedett vagyok.

tom karászi

Google-értékelés

5 csillag az 5-ből

Rendkívül rugalmasak és szakmailag is elégedett voltam velük. Csak ajánlani tudom a csapatot!

Gábor Markovics

Google-értékelés

5 csillag az 5-ből

Minőségi tervezés, profi kivitelezés!!

Válaszd ki, mely sütiket engedélyezed. A szükséges sütik nem kapcsolhatók ki.