Ako pridať nahrávanie súborov do aplikácie: úložisko, limity a bezpečnosť
Nahrávanie súborov do aplikácie pridáte tak, že súbory uložíte do objektového úložiska (bucketu), nie na disk servera ani do databázy, a do databázy uložíte malý záznam s kľúčom súboru, názvom, veľkosťou, typom a vlastníkom. Veľkosť a typ súboru overte na serveri, hneď na začiatku rozhodnite, či sú súbory verejné (napríklad fotky produktov) alebo súkromné (napríklad faktúry), a súkromné súbory sprístupňujte až po overení, kto sa pýta. V nástroji na tvorbu aplikácií s AI vieš opísať funkciu nahrávania jedným promptom; dôležité je otestovať, že súbory prežijú nové nasadenie a že ich nemôže otvoriť nesprávna osoba.
Určte, aký druh nahrávania potrebujete
Pred stavbou odpovedzte na tri otázky:
- Aké súbory? Profilové fotky, fotky produktov, PDF, tabuľky, audio, video. To určuje limity typu a veľkosti.
- Kto ich môže vidieť? Všetci (verejná galéria) alebo len nahrávajúci a administrátori (zmluvy, doklady totožnosti, klientske súbory).
- Čo sa stane po nahraní? Len sa uložia, zobrazí sa náhľad, obrázky sa zmenšia, alebo sa čítajú ich obsahy.
Verejné obrázky a súkromné dokumenty potrebujú iné nastavenia, preto to treba vyriešiť najprv.
Kde majú súbory žiť
| Možnosť | Ako funguje | Vhodné pre | Na čo dať pozor |
|---|---|---|---|
| Objektové úložisko (bucket) | Súbory v službe určenej na ne; databáza ukladá kľúč alebo URL | Takmer každá aplikácia | Prístupové pravidlá musia byť nastavené správne |
| Úložisko poskytnuté platformou | Nástroj na tvorbu alebo hosting vám zapne bucket | Aplikácie postavené na tej platforme | Limity a ceny nasledujú platformu |
| Disk servera | Súbory zapísané do súborového systému serveru aplikácie | Len lokálny vývoj | Často sa vymaže pri reštarte alebo novom nasadení |
| V databáze | Bajty súboru uložené v tabuľke | Takmer nikdy | Nafukuje databázu, spomaľuje zálohy |
| Nástroj na nahrávanie tretej strany | Hostovaný uploader zvláda celý proces | Ťažké médiá, transformácie obrázkov | Ďalší dodávateľ, účet a faktúra |
Pre väčšinu aplikácií je správnou odpoveďou objektové úložisko plus záznam v databáze. Riadok v databáze je to, na čo sa vaša aplikácia pýta („ukáž dokumenty tohto používateľa“); bucket len drží bajty.
Verejné vs. súkromné súbory
- Verejné súbory (fotky produktov, obrázky z blogu, avatary) sa môžu podávať z verejnej URL. Ktokoľvek s odkazom ich môže otvoriť, čo je pre tento druh obsahu v poriadku.
- Súkromné súbory (faktúry, zmluvy, zdravotné alebo identifikačné dokumenty, výstupy pre klientov) nesmú mať ľahko uhádnuteľnú verejnú URL. Server overí, že prihlásený používateľ je vlastníkom súboru alebo má oprávnenie, a potom ho buď streamuje, alebo vráti podpísanú URL: odkaz, ktorý funguje len krátko.
Bežnou a vážnou chybou sú súkromné súbory v verejnom buckete s predvídateľnými názvami. Ktokoľvek, kto uhádne /uploads/invoice-102.pdf, dostane cudziu faktúru.
Príklady promptov
Verejné nahrávanie obrázkov:
Nech administrátori nahrajú až 5 fotiek produktu na jeden produkt. Prijímaj JPG, PNG a WebP, každý až do 5 MB. Ukladaj súbory do úložiska a ku každému ulož kľúč, veľkosť a poradie do tabuľky product_images. Zobraz náhľady s tlačidlom na odstránenie. Typ a veľkosť over na serveri, nie len v prehliadači.
Súkromné nahrávanie dokumentov:
Pridaj stránku Dokumenty pre prihlásených klientov. Klienti môžu nahrať PDF až do 20 MB. Súbory sú súkromné: ulož ich do úložiska a v tabuľke documents ulož ID vlastníka, pôvodný názov súboru, veľkosť a čas nahrania. Sťahovať ich môže len vlastník a administrátori. Sťahovanie ide cez serverovú trasu, ktorá kontroluje oprávnenie. Nikdy nevystavuj verejnú URL pre tieto súbory.
Užitočné nadväzujúce požiadavky:
Zobraz ukazovateľ priebehu počas nahrávania a jasnú chybu, ak je súbor príliš veľký alebo má zlý typ.
Keď sa záznam dokumentu zmaže, zmaž aj uložený súbor.
Krok za krokom
- Určte typy a limity veľkosti pre každé pole nahrávania. Buďte konkrétni: „PDF do 20 MB“, nie „dokumenty“.
- Zapnite úložisko. V AI nástroji o nahrávanie požiadajte v chate, nástroj ho nastaví; inde vytvorte bucket a jeho prihlasovacie údaje pridajte ako tajomstvá na strane servera.
- Vytvorte tabuľku v databáze pre záznamy súborov: ID, vlastník, kľúč v úložisku, pôvodný názov, typ, veľkosť, čas vytvorenia.
- Vytvorte trasu nahrávania na serveri: overte, že je používateľ prihlásený, skontrolujte typ a veľkosť, vygenerujte bezpečný kľúč v úložisku (nie názov od používateľa), uložte súbor a vložte záznam.
- Vytvorte cestu na sťahovanie alebo zobrazenie: verejná URL pre verejné súbory; trasa s kontrolou oprávnenia alebo podpísaná URL pre súkromné.
- Vytvorte používateľské rozhranie: výber súboru, prípadne drag and drop, priebeh, náhľady, chyby.
- Riešte mazanie, aby odstránenie záznamu odstránilo aj uložený súbor.
- Otestujte: nahrajte, obnovte stránku, publikujte alebo nasadzujte znova a skontrolujte, že súbor sa stále načíta. Potom sa prihláste ako iný používateľ a skúste otvoriť súkromný súbor prvého používateľa.
Bežné chyby
- Zapisovanie nahrávok na disk servera. Funguje to vo vývoji, potom sa súbory po reštarte alebo novom nasadení stratia.
- Dôverovanie kontrolám v prehliadači. Atribút „accept“ vstupu pre súbor je len nápoveda, nie bezpečnosť. Typ a veľkosť kontrolujte na serveri.
- Používanie názvu súboru od používateľa ako kľúča v úložisku. Názvy sa zrážajú a môžu obsahovať zvláštne znaky. Vygenerujte jedinečný kľúč a pôvodný názov ukladajte zvlášť.
- Verejné buckety pre súkromné súbory. Pozri vyššie; toto je chyba, ktorá sa dostane do správ.
- Povolenie akéhokoľvek typu súboru. HTML alebo SVG súbory podávané z vašej domény môžu v niektorých nastaveniach spúšťať skripty. Prijímajte len typy, ktoré potrebujete.
- Žiadny limit veľkosti. Jeden obrovský súbor vie zjesť vašu kvótu úložiska alebo spôsobiť timeout požiadavky.
- Osirelé súbory. Zmazanie záznamu v databáze bez zmazania súboru pomaly zapĺňa úložisko, za ktoré platíte.
- Zabudnutý mobil. Fotky z telefónov bývajú veľké a v formátoch ako HEIC; rozhodnite, či ich prijmete, alebo prevediete.
Kontrolný zoznam
- Súbory idú do objektového úložiska, nie na disk servera ani do databázy
- Každý súbor má záznam v databáze s vlastníkom, kľúčom, názvom, typom a veľkosťou
- Typ a veľkosť sa kontrolujú na serveri
- Kľúče v úložisku sa generujú, nepreberajú z názvu súboru
- Súkromné súbory sa podávajú až po kontrole oprávnení
- Iný používateľ nemôže otvoriť vaše súkromné súbory, ani s odkazom
- Zmazanie záznamu zmaže aj súbor
- Súbory sa stále načítajú po publikovaní alebo novom nasadení
- Chyby nahrávania sa zobrazujú jasne, aj na telefóne
Nahrávanie súborov v Mythexe
Mythex môže pre projekt automaticky zapnúť úložisko súborov, keď vaša aplikácia potrebuje nahrávanie, takže bucket nemusíte pripravovať ručne. Môžete tiež v chate napísať /storage. Je dostupné vo plánoch Free a Pro, pri pláne Free s limitom 1 GB, a jeho stav vidíte v Nastavenia → Storage.
Dokumentácia to hovorí výslovne: publikovaný hosting nie je trvalý lokálny súborový systém, takže agentovi povedzte, aby použil úložisko platformy, a nie ukladanie na disk. Uložené súbory a sťahovanie sa platia z vášho kreditového zostatku podľa veľkosti a podľa toho, koľko sa stiahne; Pro platí polovičnú sadzbu oproti Free. Pozrite si Úložisko súborov v dokumentácii.
Nahrávanie zvyčajne ide ruka v ruke s databázou pre záznamy súborov a prihlasovaním pre súkromné súbory. Ak stavate miesto, kde klienti vymieňajú dokumenty, pozrite si ako vytvoriť klientský portál a pred spustením prejdite bezpečnostný kontrolný zoznam.
Otázky
Kam by sa mali nahrané súbory ukladať?
Do objektového úložiska (služba vytvorená na súbory, často nazývaná bucket), nie na disk servera aplikácie a nie do databázy. Do databázy ukladajte len kľúč alebo URL súboru a údaje ako názov, veľkosť a vlastníka.
Prečo sa mi nahrané súbory po publikovaní alebo novom nasadení stratia?
Väčšina hostingových platforiem nemá trvalý lokálny disk: keď sa aplikácia reštartuje alebo znova nasadí, súbory zapísané na jej disk sa stratia. Ukladajte nahrávky do objektového úložiska.
Ako udržať nahrané súbory súkromné?
Nesprístupňujte ich verejne na čítanie. Váš server nech overí, že prihlásený používateľ smie súbor vidieť, a potom mu ho pošle alebo vráti krátkodobý podpísaný odkaz.
Podporuje Mythex nahrávanie súborov?
Áno. Mythex môže pre projekt zapnúť úložisko súborov, keď aplikácia potrebuje nahrávanie, vo plánoch Free a Pro, pričom plán Free má limit 1 GB. O funkciu nahrávania požiadate agenta alebo napíšete /storage.