---
title: "Pylon Storage: presigned uploads to local disk or any S3 bucket"
description: "Built-in presigned file uploads use local disk in development or an S3-compatible bucket in production. One environment variable selects R2, Backblaze, MinIO, or S3. Files are policy-gated rows."
url: "https://www.pylonsync.com/product/storage"
---

File storage

# Presigned uploads, built in.

Get presigned upload URLs without standing up an upload service. Files land on local disk in development and an S3-compatible bucket such as R2, Backblaze, MinIO, or AWS in production. One environment variable selects the backend.

[Create your account →](https://cloud.stack0.dev/signup)[Read the docs](https://docs.pylonsync.com)

components/Avatar.tsx

```


import { FileUpload } from "@pylonsync/react";

 

function AvatarPicker() {

  return (

    <FileUpload

      accept="image/*"

      onUploaded={(file) => callFn("setAvatar", { fileId: file.id })}

    />

  );

}

```

- Presigned uploads send files straight from the client to storage
- Local disk in dev, S3-compatible buckets in prod
- R2, Backblaze B2, MinIO, or AWS S3 via one env var
- File metadata lives in your typed schema, gated by the same policies

## How it works.

01Direct-to-storage, signed02The same code, any backend03Files are first-class rows

presigned uploads

invoice.pdf0%

avatar.png33%

export.csv67%

presigned · S3-compatible

Pylon gives the client a short-lived presigned URL, so the bytes go straight to the bucket and large files do not tie up a server worker. The same access policies that guard your rows also guard downloads.

## What you’d otherwise wire up.

Each line is a piece teams normally assemble for this one capability. On Pylon it is part of the runtime.

- An object-store SDK and a service to sign upload URLs
- An upload proxy that streams file bytes through your API
- Access checks bolted on after the fact to file URLs
- Per-environment bucket policies kept in sync by hand

## Apps built with it.

Scaffold any of these with `npm create @pylonsync/pylon`.

[All examples →](/developers/examples)

Agency / studio

A studio site with a case-study portfolio, plus a back-office: clients, invoices with PDF export, and live project availability.

Case studiesInvoices + PDFLive availability

template: agency

Keep exploring

[Database

Typed schema. Migrations on save.](/product/database)

[Auth & policies

Auth and access rules, built in.](/product/auth)

[Server functions

Backend logic in TypeScript.](/product/functions)

## Build it on Pylon.

One framework for your schema, sync, auth, functions, realtime, and SSR. Free to start.

[Create your account →](https://cloud.stack0.dev/signup)[Read the docs](https://docs.pylonsync.com)
