Hogyan adj fájlfeltöltést az appodhoz: tárhely, korlátok és biztonság
Fájlfeltöltés hozzáadásához a fájlokat objektumtárolóban (bucketben) tárold, nem a szervered lemezén és nem az adatbázisban, az adatbázisban pedig egy kis rekordot mentsd a fájl kulcsával, nevével, méretével, típusával és tulajdonosával. A fájl méretét és típusát a szerveren ellenőrizd, előre döntsd el, hogy a fájlok nyilvánosak (mint a termékfotók) vagy privátok (mint a számlák), és a privát fájlokat csak akkor szolgáld ki, miután ellenőriztél, ki kéri. AI-alkalmazásépítőben a feltöltési funkciót egyetlen prompttal leírhatod; a lényeg az, hogy teszteld: a fájlok túlélik-e az újratelepítést, és nem nyithatja-e meg őket a nem jogosult személy.
Döntsd el, milyen feltöltésekre van szükséged
Építés előtt válaszolj három kérdésre:
- Milyen fájlok? Profilfotók, termékképek, PDF-ek, táblázatok, hang, videó. Ez határozza meg a típus- és méretkorlátokat.
- Ki láthatja őket? Mindenki (nyilvános galéria), vagy csak a feltöltő és az adminok (szerződések, személyazonosító-dokumentumok, ügyfélfájlok).
- Mi történik a feltöltés után? Csak tárolás, előnézet megjelenítése, képek átméretezése vagy a tartalom olvasása.
A nyilvános képek és a privát dokumentumok eltérő beállítást igényelnek, ezért ezt tisztázd először.
Hol legyenek a fájlok
| Lehetőség | Hogyan működik | Mire jó | Mire figyelj |
|---|---|---|---|
| Objektumtároló (bucket) | Fájlok egy erre épített szolgáltatásban; az adatbázis kulcsot vagy URL-t tárol | Szinte minden app | A hozzáférési szabályokat helyesen kell beállítani |
| Platform által biztosított tárhely | Az alkalmazásépítő vagy a tárhely egy bucketet kapcsol be neked | Az adott platformon épített appok | A limitek és az árazás a platformot követik |
| Szerver lemeze | Fájlok az app szerverének fájlrendszerére íródnak | Csak helyi fejlesztés | Újraindításkor vagy újratelepítéskor gyakran törlődik |
| Az adatbázisban | A fájlbájtok egy táblában tárolva | Szinte soha | Felduzzasztja az adatbázist, lassítja a mentéseket |
| Harmadik féltől származó feltöltő widget | Egy hosztolt feltöltőszolgáltatás kezeli a teljes folyamatot | Nagy médiatartalom, képtranszformációk | Újabb szolgáltató, fiók és számla |
Legtöbb appnál az objektumtároló plusz egy adatbázis-rekord a helyes válasz. Az adatbázis sora az, amit az app lekérdez („ennek a felhasználónak a dokumentumai”); a bucket csak a bájtokat tartja.
Nyilvános vs. privát fájlok
- Nyilvános fájlok (termékfotók, blogképek, avatárok) nyilvános URL-ről szolgálhatók. Bárki, akinek megvan a link, megnyithatja őket, ami az ilyen tartalomnál rendben van.
- Privát fájlok (számlák, szerződések, orvosi vagy személyazonosító-dokumentumok, ügyfélteljesítmények) soha nem kaphatnak kitalálható nyilvános URL-t. A szerver ellenőrzi, hogy a bejelentkezett felhasználó tulajdonosa-e a fájlnak vagy jogosult rá, majd vagy kiküldi a fájlt, vagy egy aláírt URL-t ad vissza: egy rövid ideig működő linket.
Gyakori és súlyos hiba, amikor a privát fájlok előre kitalálható nevekkel egy nyilvános bucketben vannak. Aki kitalálja az /uploads/invoice-102.pdf útvonalat, valaki más számláját kapja meg.
Példa promptok
Nyilvános képfeltöltés:
Engedd az adminoknak, hogy termékenként legfeljebb 5 termékfotót töltsenek fel. Fogadj el JPG, PNG és WebP fájlokat, fájlonként legfeljebb 5 MB-ig. A fájlokat fájltárolóban tárold, a fájl kulcsát, méretét és sorrendjét mentsd egy product_images táblába, és mutass bélyegképeket eltávolító gombbal. A típust és a méretet a szerveren ellenőrizd, ne csak a böngészőben.
Privát dokumentumfeltöltés:
Adj egy Dokumentumok oldalt a bejelentkezett ügyfeleknek. Az ügyfelek legfeljebb 20 MB-os PDF-eket tölthetnek fel. A fájlok privátok: fájltárolóban tárold őket, a tulajdonos azonosítóját, az eredeti fájlnevet, a méretet és a feltöltési időt mentsd egy documents táblába, és csak a tulajdonos és az adminok tölthessék le őket. A letöltés egy szerveri útvonalon menjen át, amely ellenőrzi a jogosultságot. Ezekhez a fájlokhoz soha ne adj nyilvános URL-t.
Hasznos kiegészítések:
Mutass folyamatjelzőt a feltöltés alatt, és világos hibaüzenetet, ha a fájl túl nagy vagy rossz típusú.
Amikor egy dokumentum-sor törlődik, a tárolt fájlt is törölje.
Lépésről lépésre
- Válassz típusokat és méretkorlátokat minden feltöltési mezőhöz. Legyél konkrét: „PDF legfeljebb 20 MB”, ne „dokumentumok”.
- Kapcsold be a tárolást. AI-építőben kérd a feltöltést, és ő beállítja a tárolót; máshol hozz létre egy bucketet, és add hozzá a hitelesítő adatait szerveroldali titokként.
- Hozz létre egy adatbázis-táblát a fájlrekordoknak: azonosító, tulajdonos, tárolókulcs, eredeti név, típus, méret, létrehozási idő.
- Építsd meg a feltöltési útvonalat a szerveren: ellenőrizd, hogy a felhasználó be van-e jelentkezve, a típust és a méretet, generálj biztonságos tárolókulcsot (nem a felhasználó fájlnevét), mentsd a fájlt, szúrd be a rekordot.
- Építsd meg a letöltési vagy megjelenítési utat: nyilvános URL a nyilvános fájloknak; jogosultság-ellenőrzött útvonal vagy aláírt URL a privátoknak.
- Építsd meg a felületet: fájlválasztó, ha hasznos drag and drop, folyamat, előnézetek, hibák.
- Kezeld a törlést, hogy a rekord eltávolítása a tárolt fájlt is eltávolítsa.
- Teszteld: tölts fel, töltsd újra az oldalt, telepíts újra vagy publikálj, és ellenőrizd, hogy a fájl még betöltődik. Majd jelentkezz be egy másik felhasználóként, és próbáld megnyitni az első felhasználó privát fájlját.
Gyakori hibák
- Feltöltések írása a szerver lemezére. Fejlesztésben működik, aztán a fájlok eltűnnek újraindításkor vagy újratelepítéskor.
- A böngésző ellenőrzéseinek megbízása. A fájlbevitel „accept” beállítása tipp, nem biztonság. A típust és a méretet a szerveren ellenőrizd.
- A felhasználó fájlnevének használata tárolókulcsként. A nevek ütköznek, és furcsa karakterek lehetnek bennük. Generálj egyedi kulcsot, az eredeti nevet pedig külön tárold.
- Nyilvános bucketek privát fájlokhoz. Lásd fent; ez az, ami újságcikket csinál.
- Bármilyen fájltípus engedélyezése. A HTML- vagy SVG-fájlok, amelyeket a saját domainedről szolgálsz ki, bizonyos beállításoknál szkripteket futtathatnak. Csak a szükséges típusokat fogadd el.
- Méretkorlát hiánya. Egy óriási feltöltés felemésztheti a tárhelykeretet, vagy időtúllépést okozhat.
- Árva fájlok. Az adatbázis-sor törlése a fájl törlése nélkül lassan megtölti a fizetett tárhelyet.
- A mobil elfelejtése. A telefonos fotók nagyok lehetnek, és olyan formátumban, mint a HEIC; döntsd el, elfogadod-e vagy konvertálod őket.
Ellenőrzőlista
- A fájlok objektumtárolóba kerülnek, nem a szerver lemezére vagy az adatbázisba
- Minden fájlnak van adatbázis-rekordja tulajdonossal, kulccsal, névvel, típussal és mérettel
- A típus és a méret a szerveren van ellenőrizve
- A tárolókulcsok generáltak, nem a fájlnévből származnak
- A privát fájlok csak jogosultság-ellenőrzés után szolgálhatók ki
- Egy másik felhasználó nem nyithatja meg a privát fájljaidat, még a linkkel sem
- Rekord törlése törli a fájlt is
- A fájlok publikálás vagy újratelepítés után is betöltődnek
- A feltöltési hibák világosan megjelennek, telefonon is
Fájlfeltöltés a Mythexben
A Mythex automatikusan be tudja kapcsolni a fájltárolást egy projekthez, amikor az appnak feltöltésre van szüksége, így nem kell kézzel bucketet kiépíteni. A chatbe beírhatod a /storage parancsot is. A Free és a Pro csomagban elérhető, a Free csomagon 1 GB-os limittel, állapotát pedig a Beállítások → Tárhely alatt látod.
A dokumentáció egyértelmű, hogy a publikált tárhely nem tartós helyi fájlrendszer, ezért kérd az ügynöktől a platformtárhely használatát a lemezre mentés helyett. A tárolt fájlokat és a letöltéseket a kreditegyenlegedből fizeted, méret és letöltött mennyiség szerint; a Pro a Free díj felét fizeti. Lásd: Fájltárolás a dokumentációban.
A feltöltések általában együtt járnak egy adatbázissal a fájlrekordokhoz és a bejelentkezéssel a privát fájlokhoz. Ha olyan helyet építenél, ahol ügyfelek dokumentumokat cserélnek, lásd: hogyan építs ügyfélportált, és indulás előtt menj végig a biztonsági ellenőrzőlistán.
Kérdések
Hol kell tárolni a feltöltött fájlokat?
Objektumtárolóban (olyan szolgáltatásban, amelyet fájlokhoz építettek, gyakran „bucketnek” hívják), nem az app szerverének lemezén és nem az adatbázisban. Az adatbázisban csak a fájl kulcsát vagy URL-jét tárold, plusz olyan adatokat, mint a név, a méret és a tulajdonos.
Miért tűnnek el a feltöltött fájlaim publikálás vagy újratelepítés után?
A legtöbb tárhelyszolgáltató nem tart fenn tartós helyi lemezt: amikor az app újraindul vagy újratelepül, a lemezére írt fájlok elvesznek. Ehelyett a feltöltéseket objektumtárolóba mentsd.
Hogyan tartom privátan a feltöltött fájlokat?
Ne tedd a fájlokat nyilvánosan olvashatóvá. A szervered ellenőrizze, hogy a bejelentkezett felhasználó jogosult-e a fájl megtekintésére, majd küldje el a fájlt, vagy adjon vissza egy rövid életű aláírt linket hozzá.
Támogatja a Mythex a fájlfeltöltést?
Igen. A Mythex be tudja kapcsolni a fájltárolást egy projekthez, ha az app feltöltést igényel, a Free és a Pro csomagban egyaránt, a Free csomagon 1 GB-os limittel. Az ügynöktől kérd a feltöltési funkciót, vagy írd be a /storage parancsot.