---
hide_title: true
hide_table_of_contents: true
title: Upload File node
---
{/*##head##*/}
# Upload File
This node uploads a file to the Noodl Cloud Services. Can be used in combination with a **Record** to link the file to a property. When retrieving the file reference you can get the **URL** to the file and **Name** of file using a [Cloud File](/nodes/data/cloud-data/cloud-file) node.

{/*##head##*/}
## Inputs
| Data | Description |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| File | {/*##input:file##*/}An HTML5 [File](https://developer.mozilla.org/en-US/docs/Web/API/File). The [File Picker](/nodes/utilities/open-file-picker) can be used to open a file dialog picker and generate the **File** from a local file. It's also possible to retrieve the File from external sources, or generate it by code. {/*##input##*/} |
| Signal | Description |
| ------------------------------------------ | ---------------------------------------------------------- |
| Upload | {/*##input:upload##*/}Triggers the upload to start.{/*##input##*/} |
## Outputs
| Data | Description |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cloud File | {/*##output:cloudFile##*/}A [Cloud File](/nodes/data/cloud-data/cloud-file), which consists of an URL and a file name. Can be connected to a property of a [Record](/nodes/data/cloud-data/record) if the property type is specified as 'File'.{/*##output##*/} |
| Total Bytes | {/*##output:progressTotalBytes##*/}The total size of the file in bytes that is being uploaded.{/*##output##*/} |
| Uploaded Bytes | {/*##output:progressLoadedBytes##*/}Contains the number of bytes have been uploaded so far. Starts at 0, and moves towards **Total Bytes** after the **Upload** input signal has been triggered. The value is updated each time the **Progress Changed** event is sent.{/*##output##*/} |
| Uploaded Percent | {/*##output:progressLoadedPercent##*/}The current percentage of the file that have been uploaded. Starts at 0, and moves towards 100 after the **Upload** input signal has been triggered. The value is updated each time the **Progress Changed** event is sent.{/*##output##*/} |
| Error | {/*##output:error##*/}The error message as a string, if the upload fails.{/*##output##*/} |
| Error Status Code | {/*##output:errorStatus##*/}An [HTTP error code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status). For example, `413` if the file is too large.{/*##output##*/} |
| Signal | Description |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Progress Changed | {/*##output:progressChanged##*/}This event is used to track the upload progress. It is triggered multiple times during an upload when **Uploaded Bytes** and **Uploaded Percent** are updated.{/*##output##*/} |
| Success | {/*##output:success##*/}This event triggers when the file was uploaded successfully.{/*##output##*/} |
| Failure | {/*##output:failure##*/}This event triggers if there was en error uploading the file.{/*##output##*/} |