Så lägger du till filuppladdningar i din app: lagring, gränser och säkerhet
För att lägga till filuppladdningar i din app lagrar du filerna i objektlagring (en bucket), inte på serverns disk eller i databasen, och sparar en liten post i databasen med filens nyckel, namn, storlek, typ och ägare. Kontrollera filstorleken och typen på servern, bestäm i förväg om filerna är offentliga (som produktbilder) eller privata (som fakturor), och servera privata filer bara efter att du kontrollerat vem som frågar. I en AI-appbyggare kan du beskriva uppladdningsfunktionen i en prompt; det viktiga är att testa att filer överlever en omdistribution och inte kan öppnas av fel person.
Bestäm vilken typ av uppladdningar du behöver
Innan du bygger, svara på tre frågor:
- Vilka filer? Profilbilder, produktbilder, PDF-filer, kalkylblad, ljud, video. Det avgör typ- och storleksgränser.
- Vem får se dem? Alla (ett offentligt galleri) eller bara uppladdaren och administratörer (kontrakt, ID-handlingar, kundfiler).
- Vad händer efter uppladdning? Bara lagra den, visa en förhandsvisning, ändra storlek på bilder eller läsa innehållet.
Offentliga bilder och privata dokument kräver olika uppsättningar, så avgör detta först.
Var filer ska ligga
| Alternativ | Så fungerar det | Bra för | Se upp för |
|---|---|---|---|
| Objektlagring (bucket) | Filer lagras i en tjänst byggd för dem; din databas lagrar en nyckel eller URL | Nästan alla appar | Åtkomstreglerna måste vara rätt satta |
| Plattformsleverad lagring | Din appbyggare eller hosting aktiverar en bucket åt dig | Appar byggda på den plattformen | Gränser och priser följer plattformen |
| Serverdisk | Filer skrivs till appserverns filsystem | Endast lokal utveckling | Töms ofta vid omstart eller omdistribution |
| I databasen | Filinnehållet lagras i en tabell | Nästan aldrig | Blåser upp databasen, gör säkerhetskopior långsammare |
| Tredjepartsuppladdare | En hostad uppladdningstjänst hanterar hela flödet | Tung media, bildtransformationer | En annan leverantör, konto och räkning |
För de flesta appar är objektlagring plus en databaspost rätt svar. Databasposten är det din app frågar efter (“visa den här användarens dokument”); bucketen håller bara bytena.
Offentliga kontra privata filer
- Offentliga filer (produktbilder, bloggbilder, avatarer) kan servas från en publik URL. Vem som helst med länken kan öppna dem, vilket är fine för den här typen av innehåll.
- Privata filer (fakturor, kontrakt, medicinska eller ID-dokument, leveranser till kunder) får aldrig ha en gissbar publik URL. Servern kontrollerar att den inloggade användaren äger filen eller har behörighet, och antingen strömmar tillbaka den eller returnerar en signerad URL: en länk som bara fungerar en kort stund.
Ett vanligt och allvarligt fel är privata filer i en publik bucket med förutsägbara namn. Den som gissar /uploads/invoice-102.pdf får någon annans faktura.
Exempelprompter
En offentlig bilduppladdning:
Låt administratörer ladda upp upp till 5 produktbilder per produkt. Acceptera JPG, PNG och WebP upp till 5 MB vardera. Spara filerna i fillagring, spara varje fils nyckel, storlek och ordning i en tabell product_images, och visa miniatyrer med en knapp för att ta bort. Validera typ och storlek på servern, inte bara i webbläsaren.
En privat dokumentuppladdning:
Lägg till en sida Dokument för inloggade kunder. Kunder kan ladda upp PDF-filer upp till 20 MB. Filerna är privata: lagra dem i fillagring, spara ägar-ID, originalfilnamn, storlek och uppladdningstid i en tabell documents, och låt bara ägaren och administratörer ladda ner dem. Nedladdningar går via en serverrutt som kontrollerar behörighet. Exponera aldrig en publik URL för dessa filer.
Bra uppföljningar:
Visa en förloppsindikator under uppladdningen och ett tydligt fel om filen är för stor eller fel typ.
När en dokumentpost tas bort, ta även bort den lagrade filen.
Steg för steg
- Bestäm typer och storleksgränser för varje uppladdningsfält. Var specifik: “PDF upp till 20 MB”, inte “dokument”.
- Aktivera lagring. I en AI-byggare begär du uppladdningar i chatten så sätter den upp lagringen; annars skapar du en bucket och lägger dess uppgifter som serverhemligheter.
- Skapa en databastabell för filposter: ID, ägare, lagringsnyckel, ursprungligt namn, typ, storlek, skapad-tid.
- Bygg uppladdningsrutten på servern: kontrollera att användaren är inloggad, kontrollera typ och storlek, generera en säker lagringsnyckel (inte användarens filnamn), spara filen och lägg in posten.
- Bygg nedladdnings- eller visningsvägen: publik URL för offentliga filer; en behörighetskontrollerad rutt eller signerad URL för privata.
- Bygg gränssnittet: filväljare, dra-och-släpp om det är användbart, förlopp, förhandsvisningar, fel.
- Hantera borttagning så att borttagning av en post också tar bort den lagrade filen.
- Testa: ladda upp, ladda om, omdistribuera eller publicera, och kontrollera att filen fortfarande laddas. Logga sedan in som en annan användare och försök öppna den första användarens privata fil.
Vanliga misstag
- Att skriva uppladdningar till serverns disk. Det fungerar i utveckling, men sedan försvinner filerna vid omstart eller omdistribution.
- Att lita på webbläsarens kontroller. Ett filfälts “accept”-inställning är en vägledning, inte säkerhet. Kontrollera typ och storlek på servern.
- Att använda användarens filnamn som lagringsnyckel. Namn krockar och kan innehålla konstiga tecken. Generera en unik nyckel och spara originalnamnet separat.
- Publika buckets för privata filer. Se ovan; det här är den som hamnar i nyheterna.
- Att tillåta alla filtyper. HTML- eller SVG-filer som servas från din domän kan köra skript i vissa uppsättningar. Acceptera bara de typer du behöver.
- Ingen storleksgräns. En enorm uppladdning kan äta upp din lagringskvot eller få förfrågan att avbrytas.
- Föräldralösa filer. Att ta bort databasposten men inte filen fyller långsamt upp lagring du betalar för.
- Att glömma mobilen. Mobilfoton kan vara stora och i format som HEIC; bestäm om du accepterar eller konverterar dem.
Checklista
- Filer går till objektlagring, inte serverdisk eller databas
- Varje fil har en databaspost med ägare, nyckel, namn, typ och storlek
- Typ och storlek kontrolleras på servern
- Lagringsnycklar genereras, tas inte från filnamnet
- Privata filer serveras först efter en behörighetskontroll
- En annan användare kan inte öppna dina privata filer, inte ens med länken
- Att ta bort en post tar bort filen
- Filerna laddas fortfarande efter publicering eller omdistribution
- Uppladdningsfel visas tydligt, även på telefon
Filuppladdningar i Mythex
Mythex kan aktivera fillagring för ett projekt automatiskt när din app behöver uppladdningar, så du behöver inte etablera en bucket för hand. Du kan också skriva /storage i chatten. Det finns på Free och Pro, med en gräns på 1 GB på Free, och du ser dess status under Inställningar → Lagring.
Dokumentationen är tydlig med att publicerad hosting inte är ett varaktigt lokalt filsystem, så be agenten att använda plattformens lagring i stället för att spara till disk. Lagrade filer och nedladdningar betalas från din kreditbalans, efter storlek och hur mycket som laddas ner; Pro betalar hälften av Free-priset. Se Fillagring i dokumentationen.
Uppladdningar går ofta hand i hand med en databas för filposterna och inloggning för privata filer. Om du bygger en plats där kunder utbyter dokument, se hur du bygger en kundportal, och gå igenom säkerhetschecklistan innan lansering.
Frågor
Var ska uppladdade filer lagras?
I objektlagring (en tjänst byggd för filer, ofta kallad en bucket), inte på appserverns disk och inte inne i databasen. Lagra bara filens nyckel eller URL, plus uppgifter som namn, storlek och ägare, i din databas.
Varför försvinner mina uppladdade filer efter publicering eller omdistribution?
De flesta hostingplattformar har ingen varaktig lokal disk: när appen startar om eller distribueras om försvinner filer som skrivits till dess disk. Spara uppladdningar i objektlagring i stället.
Hur håller jag uppladdade filer privata?
Gör inte filerna läsbara för alla. Låt din server kontrollera att den inloggade användaren får se en fil, och skicka sedan filen eller returnera en kortlivad signerad länk till den.
Stöder Mythex filuppladdningar?
Ja. Mythex kan aktivera fillagring för ett projekt när appen behöver uppladdningar, på Free och Pro, med en gräns på 1 GB på Free. Du ber agenten om uppladdningsfunktionen eller skriver /storage.