Skip to main content
Formbase accepts file uploads through multipart/form-data and stores the file in your configured S3-compatible bucket. The submission data will include a URL under either file or image depending on the MIME type. If you are self-hosting, make sure storage credentials are configured before enabling file uploads.
1

Configure storage

Set the STORAGE_* environment variables so Formbase can connect to your bucket. See File storage for examples.
2

Add a file input

<form
  action="https://formbase.dev/s/YOUR_FORM_ID"
  method="POST"
  enctype="multipart/form-data"
>
  <input name="name" type="text" required />
  <input name="resume" type="file" />
  <button type="submit">Upload</button>
</form>
The browser will submit the file as multipart/form-data.
3

Check the submission

In the dashboard, the uploaded file appears as a clickable URL under file or image.
Submissions table with file URLs

JavaScript submission

If you need a custom UI, submit with fetch and FormData:
const response = await fetch('https://formbase.dev/s/YOUR_FORM_ID', {
  method: 'POST',
  body: new FormData(formElement),
  redirect: 'manual',
});

if (response.status === 303 || response.ok) {
  // success
}
Formbase stores uploaded files as signed URLs. The original filename is not preserved.