Kuidas lisada oma rakendusse failide üleslaadimine: salvestus, piirangud ja turvalisus
Failide üleslaadimise lisamiseks rakendusse salvesta failid objektisalvestusse (bucketisse), mitte serveri kettale ega andmebaasi, ning salvesta andmebaasi väike kirje, kus on faili võti, nimi, suurus, tüüp ja omanik. Kontrolli faili suurust ja tüüpi serveris, otsusta juba alguses, kas failid on avalikud (nagu tootefotod) või privaatsed (nagu arved), ja paku privaatseid faile ainult pärast seda, kui oled kontrollinud, kes küsib. AI-rakenduste ehitajas saab üleslaadimise funktsiooni kirjeldada ühe promptiga; oluline on test, et failid püsivad uuesti juurutamisel ja et valesti inimene neid avada ei saa.
Otsusta, millist tüüpi üleslaadimisi vajad
Enne ehitamist vasta kolmele küsimusele:
- Millised failid? Profiilipildid, tootepildid, PDF-id, tabelid, heli, video. See määrab tüübi ja suuruse piirangud.
- Kes neid näha tohib? Kõik (avalik galerii) või ainult üleslaadija ja administraatorid (lepingud, isikut tõendavad dokumendid, kliendifailid).
- Mis juhtub pärast üleslaadimist? Lihtsalt salvestamine, eelvaate kuvamine, piltide suuruse muutmine või sisu lugemine.
Avalikud pildid ja privaatsed dokumendid vajavad erinevat seadistust, seega otsusta see esimesena.
Kus failid peaksid asuma
| Valik | Kuidas see töötab | Sobib | Millele tähelepanu pöörata |
|---|---|---|---|
| Objektisalvestus (bucket) | Failid on salvestatud teenusesse, mis on selleks loodud; andmebaas hoiab võtit või URL-i | Peaaegu iga rakendus | Ligipääsureeglid tuleb õigesti seada |
| Platvormi pakutav salvestus | Sinu rakenduse ehitaja või hostiteenus lubab bucketi sinu eest | Rakendused, mis on ehitatud selle platvormi peal | Piirangud ja hinnastus järgivad platvormi |
| Serveri ketas | Failid kirjutatakse rakendusserveri failisüsteemi | Ainult kohalik arendus | Sageli kustub taaskäivitusel või uuesti juurutamisel |
| Andmebaasis | Failibaidid salvestatud tabelisse | Peaaegu mitte kunagi | Paisutab andmebaasi, aeglustab varukoopiaid |
| Kolmanda osapoole üleslaadimisvidin | Hostitud üleslaadija teenus käsitleb kogu voo | Rasked meediafailid, pildi teisendused | Veel üks pakkuja, konto ja arve |
Enamiku rakenduste jaoks on õige vastus objektisalvestus ja andmebaasi kirje. Andmebaasi rida on see, mida sinu rakendus päringuga otsib („näita selle kasutaja dokumente“); bucket hoiab ainult baite.
Avalikud ja privaatsed failid
- Avalikud failid (tootefotod, blogi pildid, avatarid) saab serveerida avalikust URL-ist. Igaüks lingiga saab neid avada, mis sellise sisu puhul on korras.
- Privaatsed failid (arved, lepingud, meditsiinilised või isikut tõendavad dokumendid, kliendile tehtud tööd) ei tohi kunagi olla ennustatava avaliku URL-iga. Server kontrollib, et sisselogitud kasutaja on faili omanik või tal on luba, ning seejärel kas voogedastab faili või tagastab allkirjastatud URL-i: lingi, mis töötab vaid lühikest aega.
Levinud ja tõsine viga on privaatsed failid avalikus bucketis ettearvatavate nimedega. Keegi, kes arvab /uploads/invoice-102.pdf välja, saab kellegi teise arve.
Näidispromptid
Avaliku pildi üleslaadimine:
Lase administraatoritel laadida üles kuni 5 tootefotot tootekohta. Luba JPG, PNG ja WebP kuni 5 MB igaüks. Salvesta failid failisalvestusse, salvesta iga faili võti, suurus ja järjekord tabelisse product_images ning näita pisipilte nupuga eemaldamiseks. Valideeri tüüp ja suurus serveris, mitte ainult brauseris.
Privaatse dokumendi üleslaadimine:
Lisa sisselogitud klientidele Dokumentide leht. Kliendid saavad laadida üles PDF-e kuni 20 MB. Failid on privaatsed: salvesta need failisalvestusse, salvesta omaniku ID, algne failinimi, suurus ja üleslaadimise aeg tabelisse documents ning lase alla laadida ainult omanikul ja administraatoritel. Allalaadimine käib serveriteekonna kaudu, mis kontrollib õigusi. Nende failide jaoks ära kunagi paku avalikku URL-i.
Kasulikud järelpäringud:
Näita üleslaadimise ajal edenemisriba ja selge veateade, kui fail on liiga suur või vale tüüpi.
Kui dokumendi rida kustutatakse, kustuta ka salvestatud fail.
Samm-sammult
- Vali tüübid ja suuruse piirangud igale üleslaadimisväljale. Ole konkreetne: „PDF kuni 20 MB“, mitte „dokumendid“.
- Lülita salvestus sisse. AI-ehitajas küsi üleslaadimist vestluses, ning ta seadistab salvestuse; mujal loo bucket ja lisa selle andmed serveri saladustena.
- Loo andmebaasi tabel failikirjete jaoks: ID, omanik, salvestusvõti, algne nimi, tüüp, suurus, loomise aeg.
- Ehita üleslaadimise teekond serveris: kontrolli, et kasutaja on sisse logitud, kontrolli tüüpi ja suurust, genereeri turvaline salvestusvõti (mitte kasutaja failinimi), salvesta fail ja lisa kirje.
- Ehita allalaadimise või kuvamise tee: avalik URL avalikele failidele; õigusi kontrollivad teekond või allkirjastatud URL privaatsetele.
- Ehita kasutajaliides: failivalija, lohistamine kui vaja, edenemine, eelvaated, veateated.
- Käsitle kustutamisi, nii et kirje eemaldamine eemaldab ka salvestatud faili.
- Testi: laadi üles, laadi leht uuesti, juuruta või avalda uuesti ja kontrolli, et fail ikka avaneb. Seejärel logi sisse teise kasutajana ja proovi avada esimese kasutaja privaatne fail.
Levinud vead
- Üleslaadimiste kirjutamine serveri kettale. See töötab arenduses, kuid pärast taaskäivitust või uuesti juurutamist failid kaovad.
- Brauseri kontrollide usaldamine. Failisisendi „accept“ seade on vihje, mitte turvalisus. Kontrolli tüüpi ja suurust serveris.
- Kasutaja failinime kasutamine salvestusvõtmena. Nimed põrkuvad ja võivad sisaldada kummalisi märke. Genereeri unikaalne võti ja salvesta algne nimi eraldi.
- Avalikud bucketid privaatsete failide jaoks. Vt ülalt; see on see viga, millest uudised räägivad.
- Mis tahes failitüübi lubamine. HTML- või SVG-failid, mida serveeritakse sinu domeenilt, võivad mõnes seadistuses käivitada skripte. Võta vastu ainult vajalikke tüüpe.
- Suuruspiirangu puudumine. Üks suur üleslaadimine võib kasutada ära sinu salvestusmahu või tuua päringu ajalõpu.
- Kasutud failid. Andmebaasi rea kustutamine ilma failita täidab aeglaselt salvestusruumi, mille eest maksad.
- Mobiili unustamine. Telefonifotod võivad olla suured ja formaadis nagu HEIC; otsusta, kas neid vastu võtta või teisendada.
Kontrollnimekiri
- Failid lähevad objektisalvestusse, mitte serveri kettale ega andmebaasi
- Igal failil on andmebaasi kirje omaniku, võtme, nime, tüübi ja suurusega
- Tüüp ja suurus on serveris kontrollitud
- Salvestusvõtmed on genereeritud, mitte võetud failinimest
- Privaatseid faile serveeritakse ainult pärast õiguste kontrolli
- Teine kasutaja ei saa sinu privaatseid faile avada isegi lingiga
- Kirje kustutamine kustutab ka faili
- Failid laaduvad endiselt pärast avaldamist või uuesti juurutamist
- Üleslaadimise vead kuvatakse selgelt, sh telefonis
Failide üleslaadimine Mythexis
Mythex saab projekti jaoks automaatselt lubada failisalvestuse, kui sinu rakendus vajab üleslaadimisi, nii et bucketit ei pea käsitsi seadistama. Samuti saad vestluses kirjutada /storage. See on saadaval nii tasuta kui ka Pro paketis, tasuta paketis on 1 GB piirang, ja staatust näed jaotisest Settings → Storage.
Dokumentatsioon ütleb selgelt, et avaldatud hostimine ei ole püsiv kohalik failisüsteem, seega palu agendil kasutada platvormi salvestust, mitte kettale salvestamist. Salvestatud failid ja allalaadimised arvestatakse krediitidest, suuruse ja allalaadimiste mahu järgi; Pro maksab poole tasuta paketi hinnast. Vt failisalvestus dokumentatsioonis.
Üleslaadimised käivad tavaliselt käsikäes andmebaasiga failikirjete jaoks ja sisselogimisega privaatsete failide jaoks. Kui ehitad kohta, kus kliendid vahetavad dokumente, vt kuidas ehitada kliendiportaali ja käi enne väljalaskmist läbi turvakontrollnimekiri.
Küsimused
Kuhu üleslaaditud failid peaksid jääma?
Objektisalvestusse (teenus, mis on loodud failide hoidmiseks ja mida nimetatakse sageli bucketiks), mitte rakendusserveri kettale ega andmebaasi sisse. Sinu andmebaasi salvesta ainult faili võti või URL ning sellised andmed nagu nimi, suurus ja omanik.
Miks mu üleslaaditud failid kaovad pärast avaldamist või uuesti juurutamist?
Enamikul hostimisplatvormidel pole püsivat kohalikku ketast: kui rakendus taaskäivitub või uuesti juurutatakse, kaovad kettale kirjutatud failid. Salvesta üleslaadimised selle asemel objektisalvestusse.
Kuidas hoida üleslaaditud faile privaatsena?
Ära tee faile avalikult loetavaks. Lase serveril kontrollida, et sisselogitud kasutajal on lubatud fail näha, ja seejärel saada fail või tagasta lühiajaline allkirjastatud link.
Kas Mythex toetab failide üleslaadimist?
Jah. Mythex võib projektile lubada failisalvestuse, kui rakendus vajab üleslaadimisi, nii tasuta kui ka Pro paketis, tasuta paketis 1 GB piiranguga. Küsi agendilt üleslaadimise funktsiooni või kirjuta /storage.