Vadovai

Kaip pridėti failų įkėlimą prie savo programėlės: saugykla, limitai ir saugumas

Norėdami pridėti failų įkėlimą prie programėlės, saugokite failus objektų saugykloje (bucket), o ne serverio diske ar duomenų bazėje, o duomenų bazėje įrašykite nedidelį įrašą su failo raktu, pavadinimu, dydžiu, tipu ir savininku. Failo dydį ir tipą tikrinkite serveryje, iš anksto nuspręskite, ar failai yra vieši (pavyzdžiui, produktų nuotraukos), ar privatūs (pavyzdžiui, sąskaitos), ir privačius failus rodykite tik patikrinę, kas prašo. DI programėlių kūrimo įrankyje įkėlimo funkciją galite aprašyti vienu raginimu; svarbiausia – patikrinti, ar failai išlieka po iš naujo diegimo ir jų negali atidaryti ne tas žmogus.

Nuspręskite, kokių įkėlimų jums reikia

Prieš kurdami atsakykite į tris klausimus:

  1. Kokie failai? Profilio nuotraukos, produktų vaizdai, PDF, skaičiuoklės, garsas, vaizdo įrašai. Tai nusprendžia tipo ir dydžio limitus.
  2. Kas gali juos matyti? Visi (vieša galerija) ar tik įkėlėjas ir administratoriai (sutartys, asmens dokumentai, kliento failai).
  3. Kas nutinka po įkėlimo? Tiesiog išsaugoti, rodyti peržiūrą, keisti nuotraukų dydį ar nuskaityti turinį.

Viešoms nuotraukoms ir privatiems dokumentams reikia skirtingų sąrankų, todėl tai nusprendžiame pirmiausia.

Kur turi būti failai

ParinktisKaip veikiaTinkaKą įvertinti
Objektų saugykla (bucket)Failai saugomi paslaugoje, sukurtoje tam; duomenų bazėje saugomas raktas ar URLBeveik visoms programėlėmsPrieigos taisyklės turi būti nustatytos teisingai
Platformos teikiama saugyklaJūsų programėlių kūrimo įrankis ar talpinimo paslauga įjungia bucket jumsProgramėlės, sukurtos toje platformojeLimitai ir kainos priklauso nuo platformos
Serverio diskasFailai rašomi į programėlės serverio failų sistemąTik vietinei kūrimo aplinkaiDažnai ištrinamas paleidus iš naujo ar diegiant iš naujo
Duomenų bazėjeFailų baitai saugomi lentelėjeBeveik niekadaIšpučia duomenų bazę, lėtina atsargines kopijas
Trečiosios šalies įkėlimo valdiklisTalpinamas įkėlimo paslauga tvarko visą procesąSunkiai medijai, vaizdų transformacijomsKitas tiekėjas, paskyra ir sąskaita

Daugumai programėlių tinkamiausias atsakymas – objektų saugykla plius duomenų bazės įrašas. Duomenų bazės eilutė yra tai, ką programėlė užklausia („rodyk šio naudotojo dokumentus“); bucket tik laiko pačius baitus.

Vieši ir privatūs failai

  • Vieši failai (produktų nuotraukos, tinklaraščio vaizdai, avatarai) gali būti rodomi iš viešo URL. Bet kas su nuoroda gali juos atidaryti, ir tai tinka tokiam turiniui.
  • Privatūs failai (sąskaitos, sutartys, medicininiai ar asmens dokumentai, kliento darbai) niekada neturi turėti lengvai atspėjamo viešo URL. Serveris patikrina, ar prisijungęs naudotojas yra failo savininkas arba turi leidimą, tada arba perduoda failą, arba grąžina pasirašytą URL – nuorodą, kuri veikia tik trumpai.

Dažna ir rimta klaida – privatūs failai saugomi viešame bucket su nuspėjamais pavadinimais. Kas nors atspėjęs /uploads/invoice-102.pdf, gauna kito žmogaus sąskaitą.

Raginimų pavyzdžiai

Viešas paveikslėlių įkėlimas:

Leisk administratoriams įkelti iki 5 produkto nuotraukų vienam produktui. Priimk JPG, PNG ir WebP iki 5 MB kiekvienas. Saugok failus failų saugykloje, kiekvieno failo raktą, dydį ir eilės tvarką įrašyk lentelėje product_images ir rodyk miniatiūras su šalinimo mygtuku. Tipą ir dydį tikrink serveryje, ne tik naršyklėje.

Privataus dokumento įkėlimas:

Pridėk Dokumentų puslapį prisijungusiems klientams. Klientai gali įkelti PDF iki 20 MB. Failai privatūs: saugok juos failų saugykloje, savininko ID, originalų failo pavadinimą, dydį ir įkėlimo laiką įrašyk lentelėje documents, o atsisiųsti juos leisk tik savininkui ir administratoriams. Atsisiuntimai eina per serverio maršrutą, kuris tikrina leidimą. Niekada neatskleisk viešo URL šiems failams.

Naudingi tęsiniai:

Rodyk įkėlimo eigos juostą ir aiškų klaidos pranešimą, jei failas per didelis arba netinkamo tipo.

Kai dokumento įrašas ištrinamas, ištrink ir saugomą failą.

Žingsnis po žingsnio

  1. Nustatykite tipus ir dydžio limitus kiekvienam įkėlimo laukui. Būkite konkretūs: „PDF iki 20 MB“, o ne „dokumentai“.
  2. Įjunkite saugyklą. DI programėlių kūrimo įrankyje paprašykite įkėlimų – jis pats nustatys saugyklą; kitur sukurkite bucket ir jo prisijungimo duomenis įrašykite kaip serverio pusės paslaptis.
  3. Sukurkite duomenų bazės lentelę failų įrašams: ID, savininkas, saugojimo raktas, originalus pavadinimas, tipas, dydis, sukūrimo laikas.
  4. Sukurkite įkėlimo maršrutą serveryje: patikrinkite, ar naudotojas prisijungęs, patikrinkite tipą ir dydį, sugeneruokite saugų saugojimo raktą (ne naudotojo failo pavadinimą), išsaugokite failą, įterpkite įrašą.
  5. Sukurkite atsisiuntimo ar rodymo kelią: viešas URL viešiems failams; leidimą tikrinantį maršrutą ar pasirašytą URL privatiems.
  6. Sukurkite sąsają: failų pasirinkimas, vilkimas ir numetimas, jei naudinga, eiga, peržiūros, klaidos.
  7. Tvarkykite trynimą taip, kad įrašo pašalinimas pašalintų ir saugomą failą.
  8. Išbandykite: įkelkite, perkraukite, iš naujo diegite ar publikuokite ir patikrinkite, ar failas vis dar įkeliamas. Tada prisijunkite kaip kitas naudotojas ir pabandykite atidaryti pirmojo naudotojo privatų failą.

Dažnos klaidos

  • Įkėlimų rašymas į serverio diską. Veikia kūrimo aplinkoje, o po paleidimo iš naujo ar diegimo iš naujo failai dingsta.
  • Pasitikėjimas naršyklės patikrinimais. Failų įvesties nustatymas „accept“ yra užuomina, o ne apsauga. Tipą ir dydį tikrinkite serveryje.
  • Naudotojo failo pavadinimo naudojimas kaip saugojimo rakto. Pavadinimai susikerta ir gali turėti keistų simbolių. Generuokite unikalų raktą, o originalų pavadinimą saugokite atskirai.
  • Vieši bucket privatiems failams. Žr. aukščiau; tai ta klaida, dėl kurios pasirodo naujienose.
  • Leidimas bet kokiam failo tipui. HTML ar SVG failai, rodomi iš jūsų domeno, kai kuriose sąrankose gali vykdyti scenarijus. Priimkite tik reikalingus tipus.
  • Nėra dydžio limito. Vienas didelis įkėlimas gali suvalgyti visą saugyklos kvotą arba nutraukti užklausą dėl laiko.
  • Našlaičiai failai. Ištrinus duomenų bazės eilutę, bet ne failą, mokamą saugyklą pamažu užpildo.
  • Mobilių įrenginių pamiršimas. Telefono nuotraukos gali būti didelės ir HEIC formatu; nuspręskite, ar priimti, ar konvertuoti.

Kontrolinis sąrašas

  • Failai keliauja į objektų saugyklą, o ne į serverio diską ar duomenų bazę
  • Kiekvienas failas turi duomenų bazės įrašą su savininku, raktu, pavadinimu, tipu ir dydžiu
  • Tipas ir dydis tikrinami serveryje
  • Saugojimo raktai generuojami, o ne imami iš failo pavadinimo
  • Privatūs failai rodomi tik po leidimo patikrinimo
  • Kitas naudotojas negali atidaryti jūsų privačių failų net turėdamas nuorodą
  • Įrašo ištrynimas ištrina ir failą
  • Failai vis dar įkeliami po publikavimo ar iš naujo diegimo
  • Įkėlimo klaidos rodomos aiškiai, įskaitant telefone

Failų įkėlimas Mythex

Mythex projektui gali automatiškai įjungti failų saugyklą, kai programėlei reikia įkėlimų, todėl bucket nereikia kurti rankiniu būdu. Taip pat galite pokalbyje įvesti /storage. Ji pasiekiama Free ir Pro planuose, o Free plane riba – 1 GB; jos būseną matote Settings → Storage.

Dokumentacijoje aiškiai nurodyta, kad publikuotas talpinimas nėra patikimas vietinis failų sistemos diskas, todėl paprašykite agento naudoti platformos saugyklą, o ne įrašyti į diską. Saugomi failai ir atsisiuntimai apmokami iš jūsų kreditų balanso pagal dydį ir pagal tai, kiek atsisiunčiama; Pro plane mokate pusę Free plano įkainio. Žr. Failų saugykla dokumentacijoje.

Įkėlimai dažniausiai eina kartu su duomenų baze failų įrašams ir prisijungimu privatiems failams. Jei kuriate vietą, kurioje klientai keičiasi dokumentais, žr. kaip sukurti kliento portalą, o prieš paleidimą peržiūrėkite saugumo kontrolinį sąrašą.

Klausimai

Kur turėtų būti saugomi įkelti failai?

Objektų saugykloje (paslauga, sukurta failams, dažnai vadinama bucket), o ne serverio diske ir ne duomenų bazėje. Duomenų bazėje saugokite tik failo raktą ar URL, taip pat tokią informaciją kaip pavadinimas, dydis ir savininkas.

Kodėl mano įkelti failai dingsta po publikavimo ar iš naujo diegimo?

Dauguma talpinimo platformų neturi ilgalaikio vietinio disko: kai programėlė paleidžiama iš naujo arba diegiama iš naujo, į jos diską įrašyti failai prarandami. Vietoj to įrašykite įkeltus failus į objektų saugyklą.

Kaip išlaikyti įkeltų failų privatumą?

Nedarykite failų viešai skaitomų. Serveris turi patikrinti, ar prisijungęs naudotojas gali matyti failą, ir tada jį išsiųsti arba grąžinti trumpalaikę pasirašytą nuorodą.

Ar Mythex palaiko failų įkėlimą?

Taip. Mythex projektui gali įjungti failų saugyklą, kai programėlei reikia įkėlimų, Free ir Pro planuose, o Free plane riba – 1 GB. Įkėlimo funkciją galite užsakyti agentui arba įvesti /storage.

Mythex · Pricing · Kurkite bet ką su dirbtiniu intelektu · Svetainių ir programėlių šablonai · Mythex palyginimas · Programėlių kūrimo su dirbtiniu intelektu žodynėlis · Nemokami programėlių kūrimo su dirbtiniu intelektu įrankiai · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)