Form file uploads — accept resumes, screenshots, and PDFs in any HTML form
Add multipart/form-data and a file input. splitforms stores the upload, scans it for malware, and links it from the notification email and dashboard.
File Uploads
- ✓Standard HTML <input type="file"> — no JavaScript required, no client-side SDK
- ✓Up to 10 MB / 25 MB / 100 MB per file (Free / Pro / 4-Year); multi-file uploads supported
- ✓Multi-engine virus and malware signature scanning on every upload, before it reaches you
File Uploads in splitforms, shipped to production.
Add multipart/form-data and a file input. splitforms stores the upload, scans it for malware, and links it from the notification email and dashboard.
splitforms accepts file uploads in any HTML form — set the form's enctype to multipart/form-data, add an <input type='file'>, and you're done. Each file is uploaded directly through the splitforms endpoint (no client-side S3 signing, no presigned-URL choreography), virus-scanned with a multi-engine signature checker, and stored on encrypted object storage with private ACLs. The notification email includes a signed download link for every attachment (small files under 5 MB are also attached inline so you can preview from your phone), and the dashboard renders inline previews for images, PDFs, and most office documents alongside the rest of the submission. Single uploads can be up to 10 MB on Free, 25 MB on Pro, and 100 MB on the $59 4-year plan; multi-file uploads via the multiple attribute are supported, and a single form can collect a resume, a portfolio of screenshots, and a cover letter in one submit. Restrict allowed file types per form using the standard 'accept' attribute (accept='.pdf,.docx,image/*'), or set a stricter server-side allowlist in the dashboard so a tampered client can't bypass the check. Executables, scripts, and known malicious extensions are blocked at the edge regardless of accept attributes. File URLs are scoped to your account, signed, and expire after 30 days by default — you can extend retention per form, download all attachments for a submission as a ZIP with one click, or pipe the URLs to your webhook to copy them into your own storage. Files also flow into Notion's Files & media properties, into Google Drive via Zapier, and into your CRM through any webhook with no extra plumbing.
file-uploads.html · live preview
Three steps. From zero to a working production setup.
How file uploads actually flows through splitforms — what you do, what we do, and what lands in your inbox.
Set enctype on your form (this is the #1 forgotten step)
Add enctype="multipart/form-data" to the <form> tag. Without it, browsers silently strip files from the POST body — the form will submit but no attachment ever arrives. For React/SPA submissions via fetch, build a FormData object and pass it as the body; do NOT set Content-Type yourself, the browser sets the multipart boundary.
Add a file input (single, multi-select, or restricted by type)
Use a normal <input type="file" name="resume">. Add the 'multiple' attribute for multi-select. Use the 'accept' attribute to filter by extension or MIME type (accept='.pdf,.docx,application/pdf,image/*'). For best UX, also wrap the input in a <label> so the click target is the visible button, not the small native control.
Read attachments from the email, dashboard, or webhook payload
Each submission email contains a signed download link per file (plus inline attachment for files under 5 MB). The dashboard renders inline previews for images and PDFs and offers a one-click ZIP-all-attachments download per submission. Webhook payloads include a 'files' array with {field, url, size, mime} for every upload — copy the URLs into your own S3/R2 bucket if you need permanent storage.
Why teams pick splitforms for file uploads.
Five reasons this is the boring, reliable choice — every one shipped by default on every plan, including free.
Standard HTML <input type="file"> — no JavaScript required, no client-side SDK
Up to 10 MB / 25 MB / 100 MB per file (Free / Pro / 4-Year); multi-file uploads supported
Multi-engine virus and malware signature scanning on every upload, before it reaches you
Signed download links in the notification email + inline previews in the dashboard
Encrypted at rest; one-click ZIP-all-attachments download per submission
Allowed-MIME enforcement — restrict uploads by extension and content-type from the dashboard; executables always blocked
Drop this into any project.
Replace YOUR_ACCESS_KEY with the key from your splitforms dashboard. No SDK install. No package to npm i. The same html you already know.
Things developers ask before they integrate.
Direct answers, no marketing fluff. Missing one? Email hello@splitforms.com.
Start using file uploads today.
Create your form, grab your access key, and ship it in five minutes. Free for 1,000 submissions per month, forever.
