> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/cloud/files/browser/upload.md).

# Upload files

**Where:** Files → Browser → **Upload file** · `/projects/<project>/files/browser`

In the dashboard, uploading is one action: press **Upload file**, pick a file, and it lands in the folder you are currently viewing (the button reads "Uploading…" while it works). Under the hood it is a three-step direct upload — the bytes go straight to your storage provider and never pass through Norbix.

{% hint style="info" %}
Screenshot TODO — capture comes from testing-plan area **10-payments-files**.
{% endhint %}

## Step by step

1. **Request an upload URL** — the dashboard asks the API for a pre-signed PUT URL for the target path (current folder + file name) and content type. Endpoint: [Request Upload Url](/api-reference/files/upload-url/request-upload-url.md).
2. **PUT the bytes** — the browser sends the file directly to the storage provider using that URL.
3. **Commit** — the dashboard calls [Commit Upload](/api-reference/files/commit/commit-upload.md) with the path, file name, content type, and size. The backend records the file and raises the `FileUploaded` event, which runs any `OnFileUploaded` [trigger](/cloud/files/triggers.md). The browser list then refreshes.

Example: uploading `invoice-4821.pdf` while viewing `invoices/2026` requests an upload URL for path `invoices/2026/invoice-4821.pdf` with content type `application/pdf`, then commits it with its size in bytes.

The same flow is what your own apps use — request the URL, PUT, commit — so files uploaded by end users appear in this browser too.

## Use it from code

[Request Upload Url](/sdks-and-cli/files/upload-url/request-upload-url.md) · [Commit Upload](/sdks-and-cli/files/commit/commit-upload.md)

## API reference

Endpoints: [Request Upload Url](/api-reference/files/upload-url/request-upload-url.md), [Commit Upload](/api-reference/files/commit/commit-upload.md).
