# Modes of Operation

The Upload enables you to manage the files for upload that will be rendered by setting the Upload into its [controlled](https://www.telerik.com/kendo-react-ui-develop/components/upload/modes#controlled-mode) or [uncontrolled](https://www.telerik.com/kendo-react-ui-develop/components/upload/modes#uncontrolled-mode) mode.

* **Controlled mode** gives you full control over the files list and requires you to handle all file changes via props and events.
* **Uncontrolled mode** lets the Upload component manage its own file state, with the option to set an initial list of files.

## Controlled Mode

Controlled mode can be used when you need to:

* Integrate file uploads with other form data or global application state.
* Validate, filter, or modify files before they appear in the Upload list.
* Fully control which files are displayed and when.

To enable the controlled mode of the files for upload:

1. Set the [`files`](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops#files) property.
2. Subscribe to the following events for updates:

* [`onAdd`](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops#onadd)
* [`onRemove`](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops#onremove)
* [`onProgress`](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops#onprogress)
* [`onStatusChange`](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops#onstatuschange)

The following example demonstrates how to use controlled mode to prevent the Upload from uploading more than two files:

[Demo Source](https://demos.telerik.com/kendo-react-ui/upload/controlled/func/source.txt)

## Uncontrolled Mode

In uncontrolled mode, the Upload component manages its own internal list of files.
You can set the initial files using the [`defaultFiles`](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops#defaultfiles) property, but after that, the component handles all file state changes automatically.

[Demo Source](https://demos.telerik.com/kendo-react-ui/upload/uncontrolled/func/source.txt)

## Suggested Links

* [Using saveUrl as a function](https://www.telerik.com/kendo-react-ui-develop/components/upload/saveurl-as-function)
* [API Reference of the Upload](https://www.telerik.com/kendo-react-ui-develop/components/upload/api/uploadprops)
