WPForms Lite is one of the most popular free form builders in WordPress, but it has one gap that keeps coming up: there's no file upload field. If you want visitors to attach photos to a contact form, a support request, or a portfolio submission, the usual answer is "upgrade to Pro."
I wanted a lighter answer for that one use case, so I built Multimage – Image Uploads for WPForms, a free plugin on WordPress.org that adds a Multi Image Upload field to the WPForms builder, Lite included.
What it does
Once activated, a new Multi Image Upload field appears in the WPForms Standard Fields panel. Drag it into any form and configure it per field: maximum number of uploads, allowed file extensions, and maximum file size in MB.
On the front end, visitors can pick several images at once, see them listed with individual remove buttons, and submit. On the admin side, image URLs show up in the {all_fields} email template, and the images themselves are attached to notification emails.
The tricky part: AJAX submission
WPForms can submit forms with or without AJAX, and files don't travel nicely through form serialization. Building an upload field that only works in one mode would have been fragile.
So Multimage doesn't wait for the form submit. The flow looks like this:
- When a visitor selects images, each file is uploaded immediately to a temporary folder through a secured AJAX endpoint.
- The endpoint returns a lightweight token for each file.
- Only those tokens travel with the form submission, not the files.
- When the submission succeeds, the files are moved from the temp folder into the standard WordPress uploads directory (
wp-content/uploads/year/month).
Because the heavy lifting happens before submit, it doesn't matter whether AJAX submission is on or off. Nothing gets lost.
Security decisions
Accepting files from anonymous visitors is where most upload plugins get into trouble, so validation happens server-side regardless of what the field settings say:
- Content-based MIME detection, not just trusting the file extension
- A hard image-only whitelist: jpg, jpeg, png, gif, and webp. Even if someone misconfigures the field, non-image files are rejected
- Size limits enforced on the server
- Automatic cleanup: temporary uploads that were never attached to a successful submission are deleted after 24 hours, so abandoned forms don't fill up your disk
Why images don't go into the Media Library
A deliberate choice: submitted images are saved to the uploads directory but are not registered as Media Library attachments. Visitor submissions are form data, not site content, and a busy form shouldn't bury your actual media under hundreds of random photos.
Where it fits
Any form where visitors need to send more than one photo: gallery or portfolio submissions, job or program applications, product damage and support requests, property or event photo forms. Need a single profile photo and a larger gallery in one form? Add two Multi Image Upload fields with different limits.
Privacy
Everything stays on your server. Images live in your uploads directory and are only emailed where you've configured WPForms notifications. No external services are involved.
Try it
- Plugin: Multimage – Image Uploads for WPForms
- Requirements: WordPress 5.8+, PHP 7.4+, WPForms Lite or Pro
It's a 1.0 release, so feedback, bug reports, and feature requests on the support forum are very welcome.
Multimage is an independent, third-party add-on and is not affiliated with, endorsed by, or sponsored by WPForms or Awesome Motive, Inc. "WPForms" is used only to describe compatibility.

Top comments (0)