Use cases — unde file uploads contează
Recrutare (CV PDF + portofoliu); Aplicații job care cer diplomas scanned; Intake medical (rezultate analize, RX); Cereri service auto (fotografii cu defect); Aplicare credit (acte identitate, dovadă venituri); Recenzii produs cu foto post-livrare. În toate aceste cazuri, alternativa pre-Megaforms era email-back-and-forth — pierdere timp și hazard GDPR (atașamente email ajung în arhive necontrolate).
Limite tehnice + tipuri acceptate
Max 25MB per fișier (limită mărită la 100MB pe Business+ cu chunked upload). Max 5 fișiere per câmp upload. Owner definește whitelist MIME types: PDF, JPG/PNG/WEBP, MP4/MOV (video scurt), XLSX/DOCX, ZIP. NU se acceptă executabile (.exe, .bat, .sh, .app). MIME-ul declarat de browser e cross-verificat cu magic bytes server-side — anti-spoofing.
Signed S3 URLs — fișierele NU trec prin serverele app
Megaforms generează URL signed (TTL 5 minute) pentru upload direct la S3-compatible storage (OVH Object Storage, EU Gravelines). Browser-ul respondentului face PUT direct la S3, evitând bottleneck pe serverele Megaforms. Pentru download, owner generează URL signed cu TTL configurabil (1h-7d). Pentru long-term sharing, link permanent prin proxy autentificat.
// Server generates upload URL
const uploadUrl = await s3.getSignedUrl('putObject', {
Bucket: 'mf-uploads-eu',
Key: `${submissionId}/${sanitizedFilename}`,
Expires: 300, // 5 min
ContentType: validatedMimeType,
ContentLength: declaredSize
});
// Client uploads directly to S3
await fetch(uploadUrl, { method: 'PUT', body: file });Virus scan — pre-acceptance
După upload S3, fișierul intră în coadă de scan ClamAV (running container dedicat). Scan durează 2-15 secunde per fișier. Până la scan complet, fișierul are status «pending scan» și NU e download-abil de owner. Dacă scan detectează malware, fișierul se șterge automat + alert email la owner + submission marcat «cleaned by AV». False positive rate < 0.5% pe portofoliul real.
Retention + GDPR
Default retention: 90 zile post-submission. Owner configurabil 7d-3y-forever. Pentru DSAR (data subject access request — vezi /features/gdpr-compliance), fișierele uploaded de un user pot fi exportate ca ZIP sau șterse permanent. Storage encryption at-rest AES-256 (OVH native). Access logs păstrate 12 luni pentru audit (cine a descărcat ce, când).