---
schema_version: "1"
id: aa3d9fee5bc8568f1c732dcf690a792f368af527eb422ccc9e1757fe138926cf
title: File Upload Enhanced Screen Input Component (Beta)
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/platform/264-0-0/flow_ref_elements_screencmp_fileuploadenhanced.md
canonical_url: https://help.salesforce.com/s/articleView?id=platform.flow_ref_elements_screencmp_fileuploadenhanced.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: be4bce45430d9af20075939d6fc47f2dca108e814c07aa48fe041c8b4c3d6166
description: Give users the opportunity to upload files from a flow screen. The File Upload Enhanced (beta) flow screen component is similar to the existing File Upload screen component, but it has some key differences. The File Upload Enhanced (beta) screen component can be used in Aura and Lightning Web Runtime (LWR) sites, instead of just Aura sites. Also, you can require that users upload documents before moving on in the flow.
products:
  - Flow Builder
  - Salesforce Platform
release: "264"
---
# File Upload Enhanced Screen Input Component (Beta)

Give users the opportunity to upload files from a flow screen. The File Upload Enhanced (beta) flow screen component is similar to the existing File Upload screen component, but it has some key differences. The File Upload Enhanced (beta) screen component can be used in Aura and Lightning Web Runtime (LWR) sites, instead of just Aura sites. Also, you can require that users upload documents before moving on in the flow.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://help.salesforce.com/s/articleView?id=platform.flow_ref_supported_editions.htm&amp;release=264.0.0&amp;type=5" title="Learn about the editions and user interfaces that support Flow Builder. Some Flow Builder features integrate with other Salesforce products that require additional licenses.">View supported editions.</a></td></tr></tbody></table>

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/images/icon_note.png)

Note File Upload Enhanced Lightning web component is a pilot or beta service that is subject to the Beta Services Terms at Agreements - [Salesforce.com](http://salesforce.com/) or a written Unified Pilot Agreement if executed by Customer, and applicable terms in the Product Terms Directory. Use of this pilot or beta service is at the Customer’s sole discretion.

![A File Upload component, where the flow user has uploaded two files at once.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/flow/flow_upload_files.png)

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/images/icon_note.png)

Note This screen component requires [Lightning runtime](https://help.salesforce.com/s/articleView?id=platform.flow_distribute_runtime.htm&release=264.0.0&type=5 "Depending on how a flow is distributed, users see either the Classic runtime or Lightning runtime UI when they run the flow. Like its name suggests, Lightning runtime looks and feels like Lightning Experience.").

## Configure the File Upload Enhanced Component

You can select resources from the flow, such as variables or global constants, or you can manually enter a value.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:24%">
          <col style="width:76%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e94">
              <strong>Attribute</strong>
            </th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e100">
              <strong>Description</strong>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">Accepted Formats</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>Using the format <kbd>.ext</kbd>, enter a comma-separated list of
                the file extensions that the user can upload.</p>
              <p style="margin-bottom:0;">This attribute accepts single-value
                resources. The value is treated as text.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">Allow Multiple Files </strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>If set to <kbd>$GlobalConstant.True</kbd>, the user can upload
                multiple files.</p>
              <p style="margin-bottom:0;">This attribute accepts single-value Boolean resources.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">API Name</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>The API name of the component.</p>
              <p style="margin-bottom:0;">An API name can include underscores and alphanumeric characters without spaces.
                It must begin with a letter and can’t end with an underscore. It also can’t have
                two consecutive underscores.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">Disabled</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>If set to <kbd>$GlobalConstant.True</kbd>, the component is
                disabled.</p>
              <p style="margin-bottom:0;">This attribute accepts single-value Boolean resources.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">File Upload Label</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>Required. Label that appears above the upload button.</p>
              <p style="margin-bottom:0;">This attribute accepts
                single-value resources. The value is treated as text.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">Hover Text</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>Tooltip that appears when the user hovers over the component.</p>
              <p style="margin-bottom:0;">This attribute
                accepts single-value resources. The value is treated as text.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 ">
              <strong class="uicontrol">Related Record ID</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">
              <p>Required. ID of the record to associate the files with. If no value is passed,
                the component is disabled.</p>
              <p style="margin-bottom:0;">This attribute accepts single-value resources. The
                value is treated as text.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e94 "><strong class="uicontrol">Required</strong></td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e100 ">Requires users to enter a value before they can move to the next
              screen.</td>

          </tr>
        </tbody>
      </table>

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/images/icon_note.png)

Note Custom fields added to the ContentVersion object page are rendered in Experience Cloud sites through the contentVersionEditWizard. The contentVersionEditWizard is supported on desktop, but not mobile. Because there’s no screen in mobile to edit or add details to custom fields, file uploads fail when custom fields are marked as required.

## Store the File Upload Enhanced Component’s Values in the Flow

All attributes are available to store in flow variables, but usually you must store one of these attributes. The values are assigned to the flow variables when the user navigates to the next screen.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:24%">
          <col style="width:76%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e259">Attribute</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e262">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e259 ">
              <strong class="uicontrol">Content Document IDs</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e262 ">
              <p>The IDs of the uploaded files.</p>
              <p style="margin-bottom:0;">You can store this value in a Text collection
                variable.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Attribute" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e259 ">
              <strong class="uicontrol">Uploaded File Names</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e262 ">
              <p>The names of the uploaded files.</p>
              <p style="margin-bottom:0;">You can store this value in a Text
                collection variable.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Set the Component Visibility

Specify the logic that determines when the flow displays the component.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:24%">
          <col style="width:76%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e321">Option</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e324">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e321 ">
              <strong class="uicontrol">When to Display Component</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e324 ">
              <p>Configure when the component is displayed by using conditional logic. </p>
              <p>You can set the components to:</p>
              <dl>

                <dt style="font-weight:bold;padding-top:.25rem;">Always</dt>

                <dd style="padding-left:1.5rem;padding-bottom:.5rem;">Always display the component.</dd>


                <dt style="font-weight:bold;padding-top:.25rem;">When all conditions are met (AND)</dt>

                <dd style="padding-left:1.5rem;padding-bottom:.5rem;">Display the component when all of the conditions that you define are met.
                  Define at least one condition.</dd>


                <dt style="font-weight:bold;padding-top:.25rem;">When any condition is met (OR)</dt>

                <dd style="padding-left:1.5rem;padding-bottom:.5rem;">Display the component when at least one of the conditions that you define is
                  met. Define at least one condition.</dd>


                <dt style="font-weight:bold;padding-top:.25rem;">When custom conditional logic is met</dt>

                <dd style="padding-left:1.5rem;padding-bottom:.5rem;">Display the component when the condition logic that you define is met.
                  Define at least one condition and specify condition logic.</dd>

              </dl>
            </td>

          </tr>
        </tbody>
      </table>

## Validate Input

Provide a formula that evaluates whether what the user entered is valid and the error message to display if invalid.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:24%">
          <col style="width:76%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e412">Option</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e415">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e412 ">
              <strong class="uicontrol">Error Message</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e415 ">Specify the error message that appears below the component if the user enters
              an invalid value.</td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e412 ">
              <strong class="uicontrol">Formula</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e415 ">
              <p>Provide a formula expression that returns a Boolean value.</p>
              <p>If the formula expression evaluates to <samp>true</samp>, the
                input is valid. If the formula expression evaluates to
                <samp>false</samp>, the error message appears below the
                component.
              </p>
              <p style="margin-bottom:0;">If the user leaves the field blank and the field isn’t required, the flow doesn’t
                perform the validation. If the user leaves the field blank and the field is
                required, the flow shows the default error message and not your custom error
                message.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Specify the Behavior of Values on Revisited Screens

Specify what this component does when a user enters a value, navigates to a previous screen, and then returns to the screen with this component.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:24%">
          <col style="width:76%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e486">Option</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d272135e489">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e486 ">
              <strong class="uicontrol">Use values from when the user last visited this screen</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e489 ">The component retains the values that the user specified and doesn’t update the
              values to reflect changes made on previous screens.</td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e486 ">
              <strong class="uicontrol">Refresh inputs to incorporate changes elsewhere in the flow</strong>
            </td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d272135e489 ">
              <p>The component updates the user-specified values to reflect changes made on
                previous screens.</p>
              <p style="margin-bottom:0;" id="flow_ref_elements_screencmp_fileuploadenhanced__d5189e119"><a name="flow_ref_elements_screencmp_fileuploadenhanced__d5189e119"><!-- --></a>If you pause and then
                resume the flow, the flow retains user-specified values only in Checkbox, Checkbox
                Group, Currency, Long Text Area, Multi-Select Picklist, Number, Password,
                Picklist, Radio Buttons, and Text components.</p>
            </td>

          </tr>
        </tbody>
      </table>

## File Upload Limits

By default, you can upload up to 10 files simultaneously, unless Salesforce changed that limit. The org limit for the number of files simultaneously uploaded is 25 files with a minimum of one file. The maximum file size you can upload is 2 GB. In Experience Cloud sites, the file size limits and types allowed follow the settings determined by site file moderation.

## Considerations

- If a user doesn’t upload any files, the value of the **Content Document IDs** and **Uploaded File Names** outputs is an empty collection, represented as `“[]”`. If you check the ISBLANK or ISNULL operator, the value is always `false`.
- By default, guest user files are blocked from being uploaded. Admins can change the settings so that guest users can upload files. From **Setup** | **Salesforce Files** | **General Settings**, and then select **Allow site guest users to upload files**. This setting is only valid if the Secure guest user record access setting is enabled in the org.
- When guest users upload files, the component returns `ContentVersionId`, and not `ContentDocumentId`.
- Lightning Out doesn’t support the File Upload component.
- The file upload component isn’t supported on mobile app or browser when used with flows that are accessed through URLs. This restriction doesn’t apply when the file upload component is used in Lightning App Builder or Experience Builder.