# Upload File

> `UiPath.MLServices.Activities.MLStorageUpload`

`UiPath.MLServices.Activities.MLStorageUpload`

## Description

This activity uses the same principles of connecting to your AI Center tenant as the ML Skill activity. Once the connection is established you can select in which project and dataset you want to send the data back.

:::note
The size limit for **Upload File** activity is 5 MB/file or 10 MB/list of files.
:::

## Project compatibility

**Windows-Legacy | Windows**

## Configuration

#### Designer panel

Depending on the chosen **Connection mode**, you can configure several essential properties directly from the body of the activity.

**Connection mode: Robot**

Figure 1. The **Upload File** activity when the connection mode is made through a Robot

![The Upload File activity when the connection mode is made through a Robot](https://dev-assets.cms.uipath.com/assets/images/activities/document-understanding-the-upload-file-activity-when-the-connection-mode-is-made-through-a-robot-18-e9bb8e74-04991d59.webp)

* **Project** - Retrieves the list of available projects and allows you to select the project to which you want to send data.
* **Dataset** - Retrieves the list of datasets in the selected project and allows you to select the dataset to which you want to send data.
* **Path into dataset** - Allows you to specify the internal path within the dataset where you want to upload your file.
* **File** - The local path of the file you want to upload.

**Connection mode: Endpoint**

Figure 2. The **Upload File** activity when the connection mode is made through an endpoint

![The Upload File activity when the connection mode is made through an endpoint](https://dev-assets.cms.uipath.com/assets/images/activities/document-understanding-the-upload-file-activity-when-the-connection-mode-is-made-through-an-endpoin-403e20aa-02c19853.webp)

* **Dataset Url** - The URL of the dataset where the file should be uploaded to. For instance, you can type `https://aicentercom/j123/invoices` in the **Advanced Editor**. Once public, it is visible in the Dataset detail page.
* **API Key** - The API Key of the dataset where the file should be uploaded to. Once public, it is visible in the Dataset detail page.
* **Path into dataset** - Allows you to specify the internal path within the dataset where you want to upload your file.
* **File** - The local path of the file you want to upload.

#### Properties panel

**Common**
* **ContinueOnError** - Specifies if the automation should continue even when the activity throws an error. This field only supports Boolean values (True, False). The default value is False. As a result, if the field is blank and an error is thrown, the execution of the project stops. If the value is set to True, the execution of the project continues regardless of any error.
  :::note
  If this activity is included in **Try Catch** and the value of the **ContinueOnError** property is True, no error is caught when the project is executed.
  :::
* **DisplayName** - The display name of the activity. This field supports only `String` variables.

**Input**
* **API Key** - The API Key of the dataset where the file should be uploaded to. This field supports only `String` variables
* **Connection mode** - The desired type of connection (**Robot** or **Endpoint**)
  + **Robot** - Upload by selecting project and dataset.
  + **Endpoint** - Upload to a dataset exposed through an endpoint.
* **DatasetPath** - The folder path within the dataset you want to use with this activity. This field supports only `String` variables.
* **DatasetUrl** - The URL of the dataset where the file should be uploaded to. This field supports only `String` variables.
* **FileName** - Specifies a new name for the file name when uploaded to the storage. If this field is left empty, the default file name is used. This field supports only `String` variables.
* **LocalFilePath** - The full path of the local file that you want to upload to the storage. This field supports only `String` variables.

**Misc**
* **Private** - If selected, the values of variables and arguments are no longer logged at Verbose level.

#### **Option**

* **UniqueName** - Selecting this box automatically renames the file and gives it a unique name. The format used for the new name is `<FileNameWithoutExtension>-<RobotType>-<RobotId>-<epoch>.<extension>`. By default, this check box is cleared.

**Output**
* **FileName** - The file name that was used to save the file in storage, stored in a `String` variable. This field supports only strings and `String` variables.
* **Headers** - The headers returned by the ML Skill request.
* **StatusCode** - The Status Code returned by the ML Skill request, stored in an `Int32` variable. This field supports only `Int32` variables.
