Kā pievienot failu augšupielādi savai lietotnei: krātuve, limiti un drošība
Lai pievienotu failu augšupielādi savai lietotnei, glabā failus objektu krātuvē (bucket), nevis servera diskā vai datubāzē, un datubāzē saglabā nelielu ierakstu ar faila atslēgu, nosaukumu, izmēru, tipu un īpašnieku. Pārbaudi faila izmēru un tipu serverī, iepriekš izlem, vai faili ir publiski (piemēram, produktu fotogrāfijas) vai privāti (piemēram, rēķini), un rādi privātos failus tikai pēc tam, kad pārbaudīts, kas to pieprasa. AI lietotņu veidotājā augšupielādes funkciju var aprakstīt ar vienu uzvedni; svarīgākā daļa ir pārbaude, ka faili pārdzīvo atkārtotu izvietošanu un tos nevar atvērt nepareizs cilvēks.
Izlem, kāda veida augšupielādes vajag
Pirms būvēšanas atbildi uz trim jautājumiem:
- Kādi faili? Profila attēli, produktu bildes, PDF, izklājlapas, audio, video. Tas nosaka tipa un izmēra limitus.
- Kas tos var redzēt? Visi (publiska galerija) vai tikai augšupielādētājs un administratori (līgumi, identitāti apliecinoši dokumenti, klientu faili).
- Kas notiek pēc augšupielādes? Vienkārši saglabā, rādi priekšskatījumu, maina attēla izmēru vai nolasa saturu.
Publisku attēlu un privātu dokumentu iestatījumi atšķiras, tāpēc to izlem vispirms.
Kur failiem jāatrodas
| Iespēja | Kā darbojas | Der | Jāievēro |
|---|---|---|---|
| Objektu krātuve (bucket) | Faili glabājas pakalpojumā, kas tiem veidots; tava datubāze glabā atslēgu vai URL | Gandrīz katrai lietotnei | Piekļuves noteikumi jāiestata pareizi |
| Platformas nodrošināta krātuve | Tavs lietotņu veidotājs vai hosts tev iespējo bucket | Lietotnes, kas veidotas uz šīs platformas | Limiti un cenas seko platformai |
| Servera disks | Faili ierakstīti lietotnes servera failu sistēmā | Tikai lokālai izstrādei | Bieži tiek notīrīts restartā vai atkārtotā izvietošanā |
| Datubāzē | Failu baiti glabājas tabulā | Gandrīz nekad | Uzpūš datubāzi, palēnina dublējumus |
| Trešās puses augšupielādes logrīks | Hostēts augšupielādētājs apstrādā visu plūsmu | Smagi mediji, attēlu transformācijas | Vēl viens piegādātājs, konts un rēķins |
Vairumam lietotņu pareizā atbilde ir objektu krātuve plus datubāzes ieraksts. Datubāzes rindu lietotne vaicā („rādi šī lietotāja dokumentus”); bucket tikai glabā baitus.
Publiski un privāti faili
- Publiski faili (produktu fotogrāfijas, emuāru attēli, avatāri) var tikt rādīti no publiska URL. Ikviens ar saiti var tos atvērt, un tas šādam saturam ir pieņemami.
- Privātiem failiem (rēķini, līgumi, medicīniski vai identitāti apliecinoši dokumenti, klientu rezultāti) nekad nedrīkst būt uzminējams publisks URL. Serveris pārbauda, vai pieteikušais lietotājs ir faila īpašnieks vai tam ir atļauja, un pēc tam vai nu straumē failu atpakaļ, vai atgriež parakstītu URL: saiti, kas darbojas tikai īsu laiku.
Biežs un nopietns kļūdas veids ir privāti faili publiskā bucket ar paredzamiem nosaukumiem. Ikviens, kas uzmin /uploads/invoice-102.pdf, dabū kāda cita rēķinu.
Uzvedņu piemēri
Publisks attēlu augšupielādes gadījums:
Ļauj administratoriem augšupielādēt līdz 5 produktu fotogrāfijām katram produktam. Pieņem JPG, PNG un WebP līdz 5 MB katrs. Glabā failus failu krātuvē, saglabā katra faila atslēgu, izmēru un secību tabulā product_images un rādi sīktēlus ar noņemšanas pogu. Pārbaudi tipu un izmēru serverī, nevis tikai pārlūkprogrammā.
Privāta dokumenta augšupielāde:
Pievieno Dokumentu lapu pieteiktiem klientiem. Klienti var augšupielādēt PDF līdz 20 MB. Faili ir privāti: glabā tos failu krātuvē, saglabā īpašnieka ID, sākotnējo faila nosaukumu, izmēru un augšupielādes laiku tabulā documents, un ļauj lejupielādēt tikai īpašniekam un administratoriem. Lejupielādes iet caur servera maršrutu, kas pārbauda atļauju. Nekad neatklāj publisku URL šiem failiem.
Noderīgi turpinājumi:
Rādi progresa joslu augšupielādes laikā un skaidru kļūdu, ja fails ir par lielu vai nepareizā tipā.
Kad dokumenta ieraksts tiek dzēsts, dzēs arī glabāto failu.
Soli pa solim
- Izvēlies tipus un izmēra limitus katram augšupielādes laukam. Esi konkrēts: „PDF līdz 20 MB”, nevis „dokumenti”.
- Iespējo krātuvi. AI lietotņu veidotājā pieprasi augšupielādes, un tas iestatīs krātuvi; citur izveido bucket un pievieno tā akreditācijas datus kā servera noslēpumus.
- Izveido datubāzes tabulu failu ierakstiem: ID, īpašnieks, krātuves atslēga, sākotnējais nosaukums, tips, izmērs, izveides laiks.
- Izveido augšupielādes maršrutu serverī: pārbaudi, ka lietotājs ir pieteicies, pārbaudi tipu un izmēru, ģenerē drošu krātuves atslēgu (nevis lietotāja faila nosaukumu), saglabā failu un ievieto ierakstu.
- Izveido lejupielādes vai attēlošanas ceļu: publisks URL publiskiem failiem; maršrutu ar atļauju pārbaudi vai parakstītu URL privātiem.
- Izveido lietotāja saskarni: failu izvēlētājs, vilkšana un nomešana, ja noderīga, progress, priekšskatījumi, kļūdas.
- Apstrādā dzēšanu, lai ieraksta noņemšana noņemtu arī glabāto failu.
- Pārbaudi: augšupielādē, pārlādē, izvieto vai publicē no jauna un pārbaudi, ka fails joprojām ielādējas. Pēc tam piesakies kā cits lietotājs un mēģini atvērt pirmā lietotāja privāto failu.
Biežākās kļūdas
- Augšupielāžu rakstīšana servera diskā. Tas darbojas izstrādē, bet pēc restarta vai atkārtotas izvietošanas faili pazūd.
- Pārlūkprogrammas pārbaužu uzticēšana. Faila ievades „accept” iestatījums ir norāde, nevis drošība. Pārbaudi tipu un izmēru serverī.
- Lietotāja faila nosaukuma izmantošana kā krātuves atslēgas. Nosaukumi sakrīt un var saturēt dīvainas rakstzīmes. Ģenerē unikālu atslēgu un sākotnējo nosaukumu glabā atsevišķi.
- Publiski bucket privātiem failiem. Skat. augstāk; šī ir tā kļūda, par ko raksta ziņās.
- Jebkura tipa atļaušana. HTML vai SVG faili, kas tiek rādīti no tava domēna, dažās konfigurācijās var izpildīt skriptus. Pieņem tikai nepieciešamos tipus.
- Nav izmēra limita. Viena milzīga augšupielāde var apēst tavu krātuves kvotu vai izraisīt pieprasījuma noildzi.
- Bāreņu faili. Datubāzes rindas dzēšana bez faila dzēšanas lēni aizpilda krātuvi, par kuru maksā.
- Aizmirsta mobilā ierīce. Telefona fotogrāfijas var būt lielas un tādos formātos kā HEIC; izlem, vai tos pieņemt vai konvertēt.
Kontrolsaraksts
- Faili nonāk objektu krātuvē, nevis servera diskā vai datubāzē
- Katram failam ir datubāzes ieraksts ar īpašnieku, atslēgu, nosaukumu, tipu un izmēru
- Tips un izmērs pārbaudīti serverī
- Krātuves atslēgas ģenerētas, nevis ņemtas no faila nosaukuma
- Privāti faili tiek rādīti tikai pēc atļaujas pārbaudes
- Cits lietotājs nevar atvērt tavus privātos failus, pat ar saiti
- Ieraksta dzēšana dzēš arī failu
- Faili joprojām ielādējas pēc publicēšanas vai atkārtotas izvietošanas
- Augšupielādes kļūdas parādītas skaidri, arī telefonā
Failu augšupielāde Mythex
Mythex var automātiski iespējot failu krātuvi projektam, kad tava lietotne vajag augšupielādes, tāpēc bucket nav jāizveido ar rokām. Var arī tērzēšanā ierakstīt /storage. Tā ir pieejama Free un Pro plānos, ar 1 GB ierobežojumu Free plānā, un tās statusu vari redzēt sadaļā Settings → Storage.
Dokumentācija skaidri norāda, ka publicētais hostings nav noturīga lokālā failu sistēma, tāpēc lūdz aģentam izmantot platformas krātuvi, nevis saglabāt uz diska. Saglabātos failus un lejupielādes maksā no tava kredītu atlikuma, pēc izmēra un pēc tā, cik daudz tiek lejupielādēts; Pro maksā pusi no Free likmes. Skat. Failu krātuve dokumentācijā.
Augšupielādes parasti iet roku rokā ar datubāzi failu ierakstiem un pieteikšanos privātiem failiem. Ja veido vietu, kur klienti apmainās ar dokumentiem, skat. kā izveidot klientu portālu, un pirms palaišanas izej cauri drošības kontrolsarakstam.
Jautājumi
Kur jāglabā augšupielādētie faili?
Objektu krātuvē (pakalpojumā, kas veidots failiem, bieži saukts par bucket), nevis lietotnes servera diskā un ne datubāzē. Datubāzē glabā tikai faila atslēgu vai URL, kā arī tādus datus kā nosaukums, izmērs un īpašnieks.
Kāpēc mani augšupielādētie faili pazūd pēc publicēšanas vai atkārtotas izvietošanas?
Vairums hostinga platformu neuztur noturīgu lokālo disku: kad lietotne restartējas vai tiek izvietota no jauna, faili, kas ierakstīti tās diskā, zūd. Saglabā augšupielādes objektu krātuvē.
Kā saglabāt augšupielādētos failus privātus?
Nepadari failus publiski lasāmus. Serverim jāpārbauda, vai pieteikušais lietotājs drīkst redzēt failu, un pēc tam jānosūta fails vai jāatgriež īslaicīga parakstīta saite uz to.
Vai Mythex atbalsta failu augšupielādi?
Jā. Mythex var iespējot failu krātuvi projektam, kad lietotnei vajag augšupielādes, Free un Pro plānos, ar 1 GB ierobežojumu Free plānā. Pieprasi aģentam augšupielādes funkciju vai ieraksti /storage.