# Upload

The UDUpload component is used to upload files to Universal Dashboard. You can process files the user uploads. You will receive the data for the file, a file name and the type of file if it can be determined by the web browser.

This component works with [UDForm](/v1/dashboard/components/inputs/form.md) and [UDStepper](/v1/dashboard/components/navigation/stepper.md).

## Uploading a File

Uploads a file and shows the contents via a toast.

```
New-UDUpload -OnUpload {
    Show-UDToast $Body
}
```

The body of the `OnUpload` script block is a JSON string with the following format.

```javascript
{
  data: "base64 encoded string of data",
  name: "file name of the file uploaded",
  type: "file type as determined by the browser"
}
```

## Uploading a File with a Form

Uploads a file as part of a UDForm.

```
New-UDForm -Content {
    New-UDUpload -Id 'myFile' 
} -OnSubmit {
    Show-UDToast $Body 
}
```

The body of the `OnSubmit` script block is the same one you will see with any form and the file will be contains as one of the fields within the form.

## Example: Uploading a file and save to it the temp directory

This example allows a user to upload a file. Once the file is uploaded, it will be saved to the temporary directory.

```
New-UDUpload -Text 'Upload Image' -OnUpload {
    $Data = $Body | ConvertFrom-Json 
    $bytes = [System.Convert]::FromBase64String($Data.Data)
    [System.IO.File]::WriteAllBytes("$env:temp\$($Data.Name)", $bytes)
}
```

**New-UDUpload**

| Name     | Type     | Description                                                                | Required |
| -------- | -------- | -------------------------------------------------------------------------- | -------- |
| Id       | String   | The ID of the component. It defaults to a random GUID.                     | false    |
| Accept   | String   | The type of files to accept. By default, this component accepts all files. | false    |
| OnUpload | Endpoint | A script block to call when the file is uploaded.                          | false    |
| Text     | String   | The text to display in the upload button.                                  | false    |
| Variant  | String   | The type of button to show for the upload button.                          | false    |
| Color    | String   | The color to use for the upload button.                                    | false    |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.powershelluniversal.com/v1/dashboard/components/inputs/upload.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
