File Uploads
Accept file attachments on your forms. Size limits, storage quotas, and how to manage uploaded files.
Adding File Fields
There are two ways to add file upload fields to your forms:
Using the Form Designer
In the drag-and-drop form designer, add a File field type from the field palette. You can configure the field label, whether it is required, and accepted file types (e.g., images only, PDFs only, or any file).
Using custom HTML
Add a standard file input to your HTML form. The critical requirement is setting enctype="multipart/form-data" on the <form> tag. Without this attribute, browsers will not send file data.
<form action="https://formblade.com/f/contact" method="POST" enctype="multipart/form-data"> <label for="name">Name</label> <input type="text" name="name" required> <label for="resume">Upload your resume</label> <input type="file" name="resume"> <button type="submit">Submit</button> </form>
Replace /f/contact with your own form link from the dashboard.
enctype="multipart/form-data", the browser will submit the form as URL-encoded data and file fields will only send the filename, not the file contents.Multiple files
To accept multiple files in a single field, add the multiple attribute:
<input type="file" name="attachments" multiple>
Each file is stored individually, and size limits apply per file, not per field.
Restricting file types
Use the accept attribute to hint at allowed file types. This provides a client-side filter in the file picker dialog:
<!-- Images only --> <input type="file" name="photo" accept="image/*"> <!-- PDFs only --> <input type="file" name="document" accept=".pdf"> <!-- PDFs and Word documents --> <input type="file" name="report" accept=".pdf,.doc,.docx">
The accept attribute is a client-side hint that filters the file picker dialog. FormBlade also enforces file types on the server — dangerous files like .exe, .bat, .sh, and .lnk are always blocked. By default, safe document and image types are allowed (PDF, Word, Excel, PowerPoint, images, etc.). You can customize the allowed types in your form settings.
What you need to know
- enctype is required. Your form tag must have
enctype="multipart/form-data". Without it, the browser sends the filename only — not the file contents. This is the most common mistake. - Multiple file fields work. You can have several
<input type="file">fields in one form, each with a differentname. Each file is stored and shown separately in the dashboard. - Files are attached to notification emails (up to 10 MB total). Larger files are still stored and downloadable from the dashboard.
- Dangerous file types are blocked. Executables, scripts, and shortcuts are rejected automatically.
Size Limits
File size limits are enforced per file. If a single file exceeds the limit, the entire submission is rejected with a 413 response.
| Plan | Max File Size |
|---|---|
| Personal | 1 MB per file |
| Pro and above | 25 MB per file |
There is no limit on the number of file fields per form or files per submission, but total submission size (all files combined) must fit within the per-file limits individually.
Storage Quotas
Each account has a total storage quota for uploaded files across all forms. When you approach your limit, a warning banner appears in the dashboard. When the quota is reached, new file uploads are rejected (but text-only submissions continue to work).
| Plan | Total Storage |
|---|---|
| Personal | 100 MB |
| Pro | 1 GB |
| Business | 10 GB |
Storage used by submissions that are deleted (manually or by data retention) is freed immediately and becomes available again.
File Metadata
For each uploaded file, FormBlade stores the following metadata alongside the file contents:
- Filename: The original filename as sent by the browser (e.g.,
resume-john-doe.pdf). - Size: The file size in bytes.
- Content type: The MIME type reported by the browser (e.g.,
application/pdf,image/jpeg).
This metadata is visible in the submission detail view and is included in data exports (CSV and JSON).
Viewing Uploaded Files
To view files attached to a submission:
- Open the form in your dashboard.
- Go to the Submissions tab.
- Click on a submission row to expand it.
- Attached files appear in the expanded detail view with their filename, size, and content type.
- Click on a file to download it, or click the preview icon to view images and PDFs inline.
The submission table also shows a paperclip icon next to submissions that have file attachments, so you can quickly identify which submissions include files without expanding each row.
Storage Usage
Your current storage usage is displayed on the dashboard overview page as a usage bar. The bar shows:
- Total storage used across all forms.
- Storage quota for your current plan.
- Percentage used, with color coding: green (under 70%), yellow (70-90%), and red (over 90%).
You can also see per-form storage usage on each form's detail page under the Settings tab. This helps you identify which forms are consuming the most storage.
AJAX File Uploads
If you submit forms via JavaScript (fetch or XMLHttpRequest), use FormData to include files:
const form = document.querySelector('form');
const data = new FormData(form);
fetch('https://formblade.com/f/contact', {
method: 'POST',
body: data
// Do NOT set Content-Type header — the browser
// sets it automatically with the correct boundary
});
Replace /f/contact with your own form link from the dashboard.
FormData, do not manually set the Content-Type header. The browser needs to set it to multipart/form-data with the correct boundary string. Setting it yourself will break the upload.Complete example: job application form
Here's a real-world form with text fields and two separate file uploads:
<form action="https://formblade.com/f/contact" method="POST" enctype="multipart/form-data"> <label>Full name</label> <input type="text" name="name" required> <label>Email</label> <input type="email" name="email" required> <label>Cover letter</label> <textarea name="cover_letter"></textarea> <label>Resume (PDF)</label> <input type="file" name="resume" accept=".pdf,.doc,.docx" required> <label>Portfolio (optional)</label> <input type="file" name="portfolio" accept=".pdf,.zip"> <!-- Honeypot spam protection --> <input type="text" name="_gotcha" style="display:none" tabindex="-1"> <button type="submit">Apply</button> </form>
Replace /f/contact with your own form link from the dashboard.
Both files ("resume" and "portfolio") are stored separately. In the dashboard, the expanded submission view shows each file with its name, size, and a download link. Both are also attached to the notification email (if under 10 MB combined).
Allowed file types
By default, FormBlade accepts these safe file types:
.pdf .doc .docx .xls .xlsx .ppt .pptx .csv .txt .rtf .odt .ods .odp .asice .jpg .jpeg .png .gif .webp .svg
Additional types you can enable in form settings:
.zip .rar .7z .mp3 .mp4 .wav .psd .ai .json .xml and more
Dangerous file types are always blocked regardless of settings: .exe .bat .cmd .sh .lnk .dll .jar and other executable formats.