Guides

Sådan tilføjer du filupload til din app: lagring, grænser og sikkerhed

For at tilføje filupload til din app gemmer du filerne i objektlagring (en bucket), ikke på din servers disk eller i din database, og gemmer en lille post i databasen med filens nøgle, navn, størrelse, type og ejer. Kontrollér filstørrelse og type på serveren, beslut på forhånd, om filer er offentlige (som produktfotos) eller private (som fakturaer), og lever kun private filer, efter at du har kontrolleret, hvem der spørger. I et AI-værktøj til apps kan du beskrive upload-funktionen i én prompt; det vigtige er at teste, at filer overlever en gendeployment, og at de ikke kan åbnes af den forkerte person.

Beslut hvilken type uploads du har brug for

Før du bygger, så besvar tre spørgsmål:

  1. Hvilke filer? Profilbilleder, produktbilleder, PDF'er, regneark, lyd, video. Det bestemmer type- og størrelsesgrænser.
  2. Hvem må se dem? Alle (et offentligt galleri) eller kun uploaderen og administratorer (kontrakter, ID-dokumenter, klientfiler).
  3. Hvad sker der efter upload? Bare gem den, vis en forhåndsvisning, skalér billeder, eller læs indholdet.

Offentlige billeder og private dokumenter kræver forskellige opsætninger, så afklar dette først.

Hvor filer skal ligge

MulighedSådan virker denGodt tilVær opmærksom på
Objektlagring (bucket)Filer gemt i en tjeneste bygget til dem; din database gemmer en nøgle eller URLNæsten alle appsAdgangsregler skal være sat korrekt
Platformsleveret lagringDit app-værktøj eller din host aktiverer en bucket for digApps bygget på den platformGrænser og priser følger platformen
ServerdiskFiler skrevet til app-serverens filsystemKun lokal udviklingSlettes ofte ved genstart eller gendeployment
I databasenFilbytes gemt i en tabelNæsten aldrigOpblæser databasen, gør backups langsommere
Tredjeparts upload-widgetEn hostet uploadtjeneste håndterer hele flowetTung medie, billedtransformationerEndnu en leverandør, konto og regning

Til de fleste apps er objektlagring plus en databasepost det rigtige svar. Databasens række er det, din app forespørger ("vis denne brugers dokumenter"); bucket'en holder blot bytes.

Offentlige vs. private filer

  • Offentlige filer (produktfotos, blogbilleder, avatarer) kan serveres fra en offentlig URL. Alle med linket kan åbne dem, hvilket er fint for denne type indhold.
  • Private filer (fakturaer, kontrakter, medicinske eller ID-dokumenter, klientleverancer) må aldrig have en gætbar offentlig URL. Serveren kontrollerer, at den indloggede bruger ejer filen eller har tilladelse, og sender den derefter eller returnerer en signeret URL: et link, der kun virker i kort tid.

En almindelig og alvorlig fejl er private filer gemt i en offentlig bucket med forudsigelige navne. Den, der gætter /uploads/invoice-102.pdf, får en andens faktura.

Eksempler på prompts

Upload af et offentligt billede:

Lad administratorer uploade op til 5 produktfotos pr. produkt. Acceptér JPG, PNG og WebP op til 5 MB hver. Gem filerne i fillagring, gem hver fils nøgle, størrelse og rækkefølge i en product_images-tabel, og vis miniaturer med en fjern-knap. Valider type og størrelse på serveren, ikke kun i browseren.

Upload af et privat dokument:

Tilføj en Dokumenter-side for indloggede klienter. Klienter kan uploade PDF'er op til 20 MB. Filerne er private: gem dem i fillagring, gem ejer-ID, oprindeligt filnavn, størrelse og uploadtidspunkt i en documents-tabel, og lad kun ejeren og administratorer downloade dem. Downloads går gennem en serverrute, der kontrollerer tilladelser. Eksponér aldrig en offentlig URL til disse filer.

Nyttige opfølgninger:

Vis en statuslinje under upload og en klar fejl, hvis filen er for stor eller af forkert type.

Når en dokumentrække slettes, skal den gemte fil også slettes.

Trin for trin

  1. Vælg typer og størrelsesgrænser for hvert uploadfelt. Vær specifik: "PDF op til 20 MB", ikke "dokumenter".
  2. Aktivér lagring. I et AI-værktøj beder du om uploads, og det opsætter lagringen; andre steder opretter du en bucket og tilføjer dens legitimationsoplysninger som hemmeligheder på serveren.
  3. Opret en databasetabel til filposter: ID, ejer, lagringsnøgle, oprindeligt navn, type, størrelse, oprettelsestidspunkt.
  4. Byg upload-ruten på serveren: kontrollér at brugeren er logget ind, kontrollér type og størrelse, generér en sikker lagringsnøgle (ikke brugerens filnavn), gem filen, indsæt posten.
  5. Byg download- eller visningsstien: offentlig URL til offentlige filer; en tilladelseskontrolleret rute eller signeret URL til private.
  6. Byg brugerfladen: filvælger, træk-og-slip hvis nyttigt, statuslinje, forhåndsvisninger, fejl.
  7. Håndtér sletning, så fjernelse af en post også fjerner den gemte fil.
  8. Test: upload, genindlæs, gendeployér eller publicér, og kontrollér at filen stadig kan indlæses. Log så ind som en anden bruger og forsøg at åbne den første brugers private fil.

Almindelige fejl

  • At skrive uploads til serverens disk. Det virker i udvikling, og derefter forsvinder filerne ved genstart eller gendeployment.
  • At stole på browserens kontroller. Et filfelts "accept"-indstilling er et hint, ikke sikkerhed. Kontrollér type og størrelse på serveren.
  • At bruge brugerens filnavn som lagringsnøgle. Navne kolliderer og kan indeholde underlige tegn. Generér en unik nøgle og gem det oprindelige navn separat.
  • Offentlige buckets til private filer. Se ovenfor; det er den, der kommer i nyhederne.
  • At tillade enhver filtype. HTML- eller SVG-filer serveret fra dit domæne kan køre scripts i nogle opsætninger. Acceptér kun de typer, du har brug for.
  • Ingen størrelsesgrænse. Én enorm upload kan æde din lagringskvote eller få anmodningen til at time ud.
  • Forældreløse filer. Hvis du sletter databasepostet men ikke filen, fylder det langsomt den lagring, du betaler for.
  • At glemme mobil. Telefonfotos kan være store og i formater som HEIC; beslut om du vil acceptere dem eller konvertere dem.

Tjekliste

  • Filer går til objektlagring, ikke serverdisken eller databasen
  • Hver fil har en databasepost med ejer, nøgle, navn, type og størrelse
  • Type og størrelse kontrolleres på serveren
  • Lagringsnøgler genereres, tages ikke fra filnavnet
  • Private filer serveres kun efter en tilladelseskontrol
  • En anden bruger kan ikke åbne dine private filer, selv med linket
  • Sletning af en post sletter filen
  • Filer indlæses stadig efter publicering eller gendeployment
  • Uploadfejl vises tydeligt, også på telefon

Filupload i Mythex

Mythex kan aktivere fillagring for et projekt automatisk, når din app har brug for uploads, så du ikke skal oprette en bucket i hånden. Du kan også skrive /storage i chatten. Det er tilgængeligt på Free og Pro, med en grænse på 1 GB på Free, og du kan se dens status under Indstillinger → Lagring.

Dokumentationen er tydelig på, at publiceret hosting ikke er et varigt lokalt filsystem, så bed agenten bruge platformens lagring i stedet for at gemme på disken. Lagrede filer og downloads betales fra din kreditsaldo, efter størrelse og efter hvor meget der downloades; Pro betaler halvdelen af Free-prisen. Se Fillagring i dokumentationen.

Uploads hænger typisk sammen med en database til filposterne og login til private filer. Hvis du bygger et sted, hvor klienter udveksler dokumenter, så se sådan bygger du en klientportal, og gennemgå sikkerhedstjeklisten før lancering.

Spørgsmål

Hvor skal uploadede filer gemmes?

I objektlagring (en tjeneste bygget til filer, ofte kaldet en bucket), ikke på app-serverens disk og ikke i databasen. Gem kun filens nøgle eller URL, plus oplysninger som navn, størrelse og ejer, i din database.

Hvorfor forsvinder mine uploadede filer, efter jeg publicerer eller gendeployer?

De fleste hostingplatforme har ikke en varig lokal disk: når appen genstarter eller gendeployes, går filer skrevet til dens disk tabt. Gem uploads i objektlagring i stedet.

Hvordan holder jeg uploadede filer private?

Gør ikke filerne offentligt læsbare. Lad din server kontrollere, at den indloggede bruger må se en fil, og send den derefter, eller returnér et kortlevet signeret link til den.

Understøtter Mythex filupload?

Ja. Mythex kan aktivere fillagring for et projekt, når appen har brug for uploads, på Free og Pro, med en grænse på 1 GB på Free. Du beder agenten om upload-funktionen eller skriver /storage.

Mythex · Pricing · Byg hvad som helst med AI · Skabeloner til websites og apps · Mythex sammenlignet · Ordliste for app-bygning med AI · Gratis værktøjer til app-bygning med AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių 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 简体中文 繁體中文(香港) 繁體中文(台灣)