[PLUGIN] S3 File Uploader Web/Mobile

Most Bubble apps store uploaded files (photos, PDFs, documents) on Bubble’s own servers. That’s fine for small apps, but as you grow you may want files stored in your own cloud storage — like Amazon S3 — for more control, lower cost, and better performance.

This plugin lets the people using your app:

  • Pick a photo, document, or file from their phone or computer
  • Upload it directly to your own cloud storage bucket
  • Get back a link to that file, which you can save anywhere in your Bubble database

Using a different storage provider

This plugin doesn’t talk to AWS specifically — it just sends a file to whatever presigned URL your backend hands it. That means it works just as well with any storage service that speaks the same “S3 API,” including:

  • Cloudflare R2
  • Backblaze B2
  • Wasabi
  • DigitalOcean Spaces
  • MinIO (self-hosted)

It works the same way on desktop browsers, mobile browsers, and inside native mobile apps built with Bubble.

How it works, in plain English

You don’t need to know anything about cloud infrastructure to use this — but it helps to understand the basic flow, because you’ll be wiring it up using Bubble workflows.

  1. Someone picks a file. They tap the plugin’s button (or your own button), and choose a photo or document from their device.
  2. Your app asks for permission to upload. Before any file leaves the browser, the plugin asks your Bubble workflow: “I have a file called photo.jpg — can I upload it?” This is where your backend quietly talks to your cloud storage and gets back a special, temporary, one-time-use link called a presigned URL. Think of it like a guest pass that only works once, for one file, for a few minutes.
  3. The file uploads directly to your storage. The plugin uses that temporary link to send the file straight to your cloud storage bucket — it never passes through Bubble’s own servers.
  4. You get the result back. Once the upload finishes, the plugin tells your workflow the public link (and the storage “key”) for that file, which you can save to your database, attach to a user’s profile, show in a gallery, etc.

If someone picks several files at once, the plugin repeats steps 2–3 for each file, one at a time, automatically.

A note on security

You might be wondering: “Doesn’t this plugin need my secret AWS keys?” — No, and that’s intentional. Your Access Key ID and Secret Access Key (covered in the next page) are never typed into this plugin and never sent to anyone’s browser. They live only on your server side (inside a Bubble backend workflow or an external API), where they’re used to generate that temporary presigned URL. The plugin itself only ever sees the temporary link — never your permanent credentials.

Plugin link: S3 File Upload Web/Mobile Plugin | Bubble
Documentation: S3 File Upload Web/Mobile | No-Code Venture

Are there any file size limits?

The biggest file we tried is 60 MB and worked fine. @asked111

Amazon S3 presigned URLs can handle file sizes up to 5 GB for standard single-part uploads