Bestandsuploads toevoegen aan uw app: opslag, limieten en beveiliging
Om bestandsuploads aan uw app toe te voegen, slaat u de bestanden op in objectopslag (een bucket), niet op de schijf van uw server of in uw database, en bewaart u een klein record in de database met de sleutel, naam, grootte, type en eigenaar van het bestand. Controleer de bestandsgrootte en het type op de server, bepaal vooraf of bestanden publiek zijn (zoals productfoto's) of privé (zoals facturen), en lever privébestanden alleen nadat u hebt gecontroleerd wie erom vraagt. In een AI-app-builder kunt u de uploadfunctie in één prompt beschrijven; het belangrijkste is testen of bestanden een herdeploy overleven en niet door de verkeerde persoon te openen zijn.
Bepaal welke uploads u nodig hebt
Beantwoord voor het bouwen drie vragen:
- Welke bestanden? Profielfoto's, productafbeeldingen, pdf's, spreadsheets, audio, video. Dat bepaalt de limieten voor type en grootte.
- Wie mag ze zien? Iedereen (een openbare galerij) of alleen de uploader en beheerders (contracten, identiteitsdocumenten, klantbestanden).
- Wat gebeurt er na de upload? Alleen opslaan, een voorbeeld tonen, afbeeldingen verkleinen, of de inhoud lezen.
Openbare afbeeldingen en privédocumenten vragen om verschillende opzetten, dus regel dit eerst.
Waar bestanden moeten staan
| Optie | Hoe het werkt | Geschikt voor | Let op |
|---|---|---|---|
| Objectopslag (bucket) | Bestanden in een dienst die daarvoor is gebouwd; uw database bewaart een sleutel of URL | Bijna elke app | Toegangsregels moeten juist zijn ingesteld |
| Opslag van het platform | Uw app-builder of host schakelt er een bucket voor u in | Apps die op dat platform zijn gebouwd | Limieten en prijzen volgen het platform |
| Serverschijf | Bestanden geschreven naar het bestandssysteem van de appserver | Alleen lokale ontwikkeling | Vaak gewist bij herstart of herdeploy |
| In de database | Bestandsbytes opgeslagen in een tabel | Bijna nooit | Maakt de database zwaar, vertraagt back-ups |
| Uploadwidget van derden | Een gehoste uploader regelt de hele stroom | Zware media, beeldtransformaties | Nog een leverancier, account en factuur |
Voor de meeste apps is objectopslag plus een databaserecord het juiste antwoord. De databaserij is wat uw app opvraagt („toon de documenten van deze gebruiker“); de bucket bewaart alleen de bytes.
Openbare versus privébestanden
- Openbare bestanden (productfoto's, blogafbeeldingen, avatars) kunnen via een openbare URL worden geleverd. Iedereen met de link kan ze openen, wat voor dit soort inhoud prima is.
- Privébestanden (facturen, contracten, medische of identiteitsdocumenten, klantopleveringen) mogen nooit een raadbare openbare URL hebben. De server controleert of de ingelogde gebruiker het bestand bezit of toestemming heeft, en stuurt het dan of geeft een ondertekende URL: een link die alleen kort werkt.
Een veelvoorkomende en ernstige fout is privébestanden in een openbare bucket met voorspelbare namen. Iedereen die /uploads/factuur-102.pdf raadt, krijgt de factuur van iemand anders.
Voorbeeldprompts
Een openbare afbeeldingsupload:
Laat beheerders tot 5 productfoto's per product uploaden. Accepteer JPG, PNG en WebP tot elk 5 MB. Sla de bestanden op in bestandsopslag, bewaar de sleutel, grootte en volgorde van elk bestand in een tabel product_images, en toon miniaturen met een verwijderknop. Valideer type en grootte op de server, niet alleen in de browser.
Een upload van privédocumenten:
Voeg een Documentenpagina toe voor ingelogde klanten. Klanten kunnen pdf's tot 20 MB uploaden. Bestanden zijn privé: sla ze op in bestandsopslag, bewaar eigenaar-ID, oorspronkelijke bestandsnaam, grootte en uploadtijd in een tabel documents, en laat alleen de eigenaar en beheerders downloaden. Downloads gaan via een serverroute die de rechten controleert. Geef nooit een openbare URL voor deze bestanden.
Nuttige vervolgstappen:
Toon een voortgangsbalk tijdens het uploaden en een duidelijke fout als het bestand te groot is of het verkeerde type heeft.
Als een documentrij wordt verwijderd, verwijder dan ook het opgeslagen bestand.
Stap voor stap
- Kies type en limieten voor elk uploadveld. Wees specifiek: „pdf tot 20 MB“, niet „documenten“.
- Schakel opslag in. In een AI-builder vraagt u om uploads en die zet de opslag op; elders maakt u een bucket aan en zet u de inloggegevens als geheimen op de server.
- Maak een databasetabel voor bestandsrecords: ID, eigenaar, opslagsleutel, oorspronkelijke naam, type, grootte, aanmaaktijd.
- Bouw de uploadroute op de server: controleer of de gebruiker is ingelogd, controleer type en grootte, genereer een veilige opslagsleutel (niet de bestandsnaam van de gebruiker), sla het bestand op en voeg het record in.
- Bouw het pad voor downloaden of weergeven: openbare URL voor openbare bestanden; een route met rechtencontrole of een ondertekende URL voor privébestanden.
- Bouw de interface: bestandskiezer, slepen en neerzetten indien nuttig, voortgang, voorbeelden, fouten.
- Regel verwijderen zodat het verwijderen van een record ook het bestand verwijdert.
- Test: upload, herlaad, herdeploy of publiceer, en controleer of het bestand nog laadt. Log daarna in als andere gebruiker en probeer het privébestand van de eerste gebruiker te openen.
Veelgemaakte fouten
- Uploads naar de schijf van de server schrijven. Het werkt in ontwikkeling, daarna verdwijnen bestanden na een herstart of herdeploy.
- Vertrouwen op controles in de browser. Het „accept“-attribuut van een bestandsveld is een hint, geen beveiliging. Controleer type en grootte op de server.
- De bestandsnaam van de gebruiker als opslagsleutel gebruiken. Namen botsen en kunnen rare tekens bevatten. Genereer een unieke sleutel en bewaar de oorspronkelijke naam apart.
- Openbare buckets voor privébestanden. Zie hierboven; dit is de fout die in het nieuws komt.
- Elk bestandstype toestaan. HTML- of SVG-bestanden die vanaf uw domein worden geserveerd, kunnen in sommige opzetten scripts uitvoeren. Accepteer alleen de typen die u nodig hebt.
- Geen groottelimiet. Eén enorme upload kan uw opslagruimte opmaken of de aanvraag laten time-outen.
- Verweesde bestanden. Een databaserij verwijderen zonder het bestand te verwijderen vult langzaam de opslag waarvoor u betaalt.
- Mobiel vergeten. Telefoonfoto's kunnen groot zijn en in formaten als HEIC staan; bepaal of u ze accepteert of converteert.
Checklist
- Bestanden gaan naar objectopslag, niet naar de serverschijf of de database
- Elk bestand heeft een databaserecord met eigenaar, sleutel, naam, type en grootte
- Type en grootte worden op de server gecontroleerd
- Opslagsleutels worden gegenereerd, niet uit de bestandsnaam overgenomen
- Privébestanden worden alleen geleverd na een rechtencontrole
- Een andere gebruiker kan uw privébestanden niet openen, ook niet met de link
- Een record verwijderen verwijdert het bestand
- Bestanden laden nog na publiceren of herdeployen
- Uploadfouten worden duidelijk getoond, ook op telefoons
Bestandsuploads in Mythex
Mythex kan bestandsopslag voor een project automatisch inschakelen wanneer uw app uploads nodig heeft, zodat u geen bucket met de hand hoeft in te richten. U kunt ook /storage in de chat typen. Het is beschikbaar op Free en Pro, met een limiet van 1 GB op Free, en u ziet de status onder Instellingen → Opslag.
De documentatie is duidelijk dat gepubliceerde hosting geen duurzaam lokaal bestandssysteem is, dus vraag de agent om platformopslag te gebruiken in plaats van op schijf op te slaan. Opgeslagen bestanden en downloads worden betaald uit uw creditsaldo, op basis van grootte en hoeveel er wordt gedownload; Pro betaalt de helft van het Free-tarief. Zie Bestandsopslag in de documentatie.
Uploads gaan meestal samen met een database voor de bestandsrecords en inloggen voor privébestanden. Als u een plek bouwt waar klanten documenten uitwisselen, zie hoe u een klantenportaal bouwt, en loop vóór de lancering de beveiligingschecklist door.
Veelgestelde vragen
Waar moeten geüploade bestanden worden opgeslagen?
In objectopslag (een dienst die voor bestanden is gebouwd, vaak een bucket genoemd), niet op de schijf van de appserver en niet in de database. Sla in uw database alleen de sleutel of URL van het bestand op, plus gegevens zoals naam, grootte en eigenaar.
Waarom verdwijnen mijn geüploade bestanden na publiceren of opnieuw deployen?
De meeste hostingplatforms hebben geen duurzame lokale schijf: wanneer de app opnieuw start of opnieuw wordt gedeployd, gaan bestanden die op de schijf zijn geschreven verloren. Sla uploads daarom op in objectopslag.
Hoe houd ik geüploade bestanden privé?
Maak de bestanden niet publiek leesbaar. Laat uw server controleren of de ingelogde gebruiker een bestand mag zien, en stuur het daarna of geef een kortdurende ondertekende link terug.
Ondersteunt Mythex bestandsuploads?
Ja. Mythex kan bestandsopslag voor een project inschakelen wanneer de app uploads nodig heeft, op Free en Pro, met een limiet van 1 GB op Free. U vraagt de agent om de uploadfunctie of typt /storage.