Skip to content

Accept file uploads in your app

All plans Admin

A Maker app is static, so on its own it can’t receive a file a visitor picks, a CV on a job form, a photo on a contest entry, a receipt on an expense report. File uploads fix that without a backend: your app posts the file to an Onplana endpoint, and each one becomes a document in a library you own. You open, preview, and download those files in your app project’s Files tab, the same place your other documents live.

Steps

  1. In Build, open the Files in panel (the toggle on the bottom strip, next to Forms and Data).
  2. Click Enable file uploads. Onplana mints an upload endpoint and creates an App uploads library in your app’s project to hold the files.
  3. Copy the endpoint or the ready-made snippet, or just ask the agent for a form with a file field, it wires the endpoint for you.

The endpoint is a public, send-only address; it’s safe to embed in your app’s code. It survives a rename or re-publish, so you can add it during a build before the app is even live.

You don’t have to touch code. Ask for what you want, for example:

“Build a job application form: name, email, and let the applicant attach their CV.”

The agent builds the form, posts the file to your app’s upload endpoint (and the text fields to a form endpoint, if you’re collecting those too), shows a success message, and adds a hidden anti-bot field for you.

One thing the agent will never build: a gallery or list of uploaded files. Your app cannot read files back, so nothing a visitor uploads is ever shown to other visitors.

Every upload lands as a document in the bound App uploads library, under your app’s project. From there you get everything Files already gives you: preview, download, sharing, storage accounting, and the recycle bin.

When one submission carries both form fields and a file, a job application with a CV, say, the pair arrives linked: the submission’s row in your list shows a paperclip that opens the file, and the document shows a Submission chip that opens the row it came with. The agent wires this automatically; no more matching an orphan file to an orphan row by timestamp.

Files count toward your workspace storage like any other document. Each file is also capped in size (10 MB by default, shown in the panel), and the platform’s usual file-type checks apply, the real bytes are inspected, so a file claiming to be a PDF that isn’t one is rejected.

A folder receiving uploads is a normal folder, not a hidden system area, so the workspace marks that it is wired to a live app:

  • A banner on the folder, reading “Receiving files from your app. Visitors can send files through the app, and deleting this folder breaks live uploads.” Two hazards in one line: people outside your organization can put files here, and the folder is load-bearing for a running app.
  • An AUTO badge next to the folder in the sidebar, for folders the app created.

The equivalent markers exist on the list side for form submissions, including a per-row source filter. See Collect form submissions from your app.

Public endpoints attract abuse, so a few controls are built in:

  • A hidden honeypot field. The agent adds a hidden field a real person never fills in. If it comes back filled, the upload is silently dropped.
  • A captcha, optional. Toggle Require captcha to make the app verify a captcha before an upload is accepted.
  • Rate limits. Uploads are rate-limited per source, and each app has a daily upload cap that scales with your plan (20 a day on Free, up to unlimited on Enterprise+; see the pricing page), so a flood can’t fill your storage.
  • Per-file size limits and real type checks, and an app can’t post files to another app’s endpoint.

The panel shows how much of today’s limit the endpoint has used, for example “3 of 5,000 uploads today”. If it reaches the cap, that line turns into a warning and you get a notification, because past the cap new files are not saved. The public address keeps answering normally (it never tells a visitor about your plan’s limits), so that notification is your signal that files are being missed. The limit resets within 24 hours, and upgrading your plan raises it.

The other two limits: how many files, and how much space

Section titled “The other two limits: how many files, and how much space”

The daily cap is about how fast files arrive. Two separate limits govern what you keep:

  • A file count per project, counted across every folder in that project together (500 on Free, up to 100,000 on Enterprise; unlimited on Enterprise+).
  • Your storage size, the usual gigabyte allowance for the whole organization.

They answer different questions , one is how many, the other is how much , so a project can hit either one first. Thousands of tiny files can fill the count while barely touching your storage.

The important difference from the daily cap: these do not clear themselves. Once a project is full, uploads keep being dropped until you remove files or upgrade. Deleting files frees the room immediately. And as always on a public endpoint, the visitor is never told , they get a normal response either way, and you are the only one who learns the file was not kept.

In the Files in panel you can:

  • Pause it, flip Accepting files off to stop new uploads without losing the ones you have.
  • Require a captcha, toggle it on or off anytime.
  • Remove it, the endpoint stops working. Files already uploaded stay in your library.

Do I need a server or storage of my own? No. The app stays 100% static; Onplana stores the files in a library for you.

Can a visitor see files other people uploaded? No. The endpoint only accepts a file, it can’t return any. Your app has no way to read files back, and the agent won’t build one that tries.

What file types are allowed? The platform’s standard document types (PDFs, images, Office documents, text, and so on). Archives and a few risky legacy formats are refused on the public endpoint, and every file’s real bytes are checked against its claimed type.

What happens to files if I remove the endpoint? They stay. Removing the endpoint only stops new uploads; the library and its documents are yours to keep or delete.