ToolJet/docs/versioned_docs/version-3.16.0-LTS/widgets/file-input.md
2026-04-16 15:00:27 +05:30

11 KiB
Raw Blame History

id title
file-input File Input

The File Input component lets users select files from their device using a compact input field with a Browse button. Unlike the File Picker, it does not include a drag-and-drop zone — it is designed for inline form use where a familiar, button-triggered file selection is preferred.

Example Usage

A procurement team builds an internal expense management tool where employees submit reimbursement requests. The form includes a File Input component so users can attach receipts by clicking Browse, selecting one or more files, and submitting. The component enforces a 5 MB max file size and accepts only PDFs and images, preventing invalid uploads before they reach the backend.

Properties

Data

<div style={{ width:"150px"}}> Property <div style={{ width:"250px"}}> Description <div style={{ width:"150px"}}> Expected Value
Label Text displayed as the field label. String (e.g., Attach Receipt).
Placeholder Hint text shown in the input area when no file is selected. String (e.g., Click to select file).
Allow uploading multiple files Allows the user to select more than one file at a time. Toggle (default: enabled).
Enable clear selection Shows a clear (×) button inside the input area to remove the selected file(s). Toggle (default: disabled).
Enable parsing Parses the file content and makes it available as structured data. Toggle (default: disabled).
File type When Enable parsing is on, specifies how the file is parsed. Select — Autodetect from extension, CSV, Microsoft Excel xls, Microsoft Excel xlsx, JSON (default: Autodetect from extension).

Events

Event Description
On File Selected Triggers when the user selects one or more files from the file dialog.
On File Loaded Triggers when a selected file finishes loading in the browser.

:::info Check Action Reference docs to get detailed information about all the Actions. :::

Component Specific Actions (CSA)

The following actions can be controlled using component-specific actions (CSA), triggered via an event or a RunJS query.

<div style={{ width:"130px"}}> Action <div style={{ width:"200px"}}> Description <div style={{ width:"220px"}}> How To Access
clear() Clears the currently selected file(s). components.fileinput1.clear()
setFocus() Moves focus to the file input component. components.fileinput1.setFocus()
setBlur() Removes focus from the file input component. components.fileinput1.setBlur()
setVisibility() Shows or hides the component. components.fileinput1.setVisibility(false)
setDisable() Enables or disables the component. components.fileinput1.setDisable(true)
setLoading() Sets the loading state of the component. components.fileinput1.setLoading(true)

Exposed Variables

<div style={{ width:"120px"}}> Variable <div style={{ width:"220px"}}> Description <div style={{ width:"220px"}}> How To Access
files Array of file objects selected by the user. Each object includes the file name, content, and metadata. {{components.fileinput1.files}}
isParsing Indicates whether file content is currently being parsed. {{components.fileinput1.isParsing}}
isValid Indicates whether the selected file(s) pass all validation rules. {{components.fileinput1.isValid}}
fileSize The size of the selected file in bytes. {{components.fileinput1.fileSize}}
isMandatory Indicates whether the field is marked as mandatory. {{components.fileinput1.isMandatory}}
isLoading Indicates whether the component is in a loading state. {{components.fileinput1.isLoading}}
isVisible Indicates whether the component is currently visible. {{components.fileinput1.isVisible}}
isDisabled Indicates whether the component is currently disabled. {{components.fileinput1.isDisabled}}

Validation

<div style={{ width:"130px"}}> Validation Option <div style={{ width:"230px"}}> Description <div style={{ width:"200px"}}> Expected Value
Mark as mandatory Displays a validation error if no file is selected on form submission. Toggle (default: disabled).
File type Restricts accepted file types using MIME types or extensions. String (e.g., image/*, .pdf, */*). Default: */*.
Min size (Bytes) The minimum allowed file size in bytes. Number (default: 50).
Max size (Bytes) The maximum allowed file size in bytes. Number (default: 51200000, ~51 MB).
Min files The minimum number of files required. Only shown when Allow uploading multiple files is enabled. Number (default: 0).
Max files The maximum number of files the user can select. Only shown when Allow uploading multiple files is enabled. Number (default: 2).

:::info File types must be valid MIME types or file extensions. MIME type detection may vary across platforms — for example, CSV files are reported as text/plain on macOS and application/vnd.ms-excel on Windows. :::

Additional Actions

<div style={{ width:"100px"}}> Action <div style={{ width:"150px"}}> Description <div style={{ width:"250px"}}> Configuration Options
Loading state Enables a loading spinner, often used with isLoading to indicate progress. Enable/disable the toggle button or dynamically configure the value by clicking on fx and entering a logical expression.
Visibility Controls component visibility. Enable/disable the toggle button or dynamically configure the value by clicking on fx and entering a logical expression.
Disable Enables or disables the component. Enable/disable the toggle button or dynamically configure the value by clicking on fx and entering a logical expression.
Tooltip Provides additional information on hover. Set a string value for display. String (e.g., Upload your expense receipt here.).

Devices

<div style={{ width:"100px"}}> Property <div style={{ width:"150px"}}> Description <div style={{ width:"250px"}}> Expected Value
Show on desktop Makes the component visible in desktop view. You can set it with the toggle button or dynamically configure the value by clicking on fx and entering a logical expression.
Show on mobile Makes the component visible in mobile view. You can set it with the toggle button or dynamically configure the value by clicking on fx and entering a logical expression.

Styles

Label

<div style={{ width:"120px"}}> Property <div style={{ width:"200px"}}> Description <div style={{ width:"230px"}}> Configuration Options
Color Sets the label text color. Select a theme color or pick from the color picker.
Alignment Controls whether the label appears above (Top) or beside (Side) the input field. Switch — Top (default) / Side.
Direction When alignment is Side, positions the label to the left or right of the input. Icon toggle — Left (default) / Right.
Width When alignment is Side, determines whether the label width adjusts automatically or uses a fixed value. Checkbox — Auto (default). Uncheck to set a custom width.
Label width Sets a fixed width for the label. Only available when Side alignment is selected and Auto width is unchecked. Slider (percentage of component width).
Width type Specifies whether the label width is measured relative to the whole component or just the input field. Only available when Side alignment is selected and Auto width is unchecked. Select — Of the Component (default) / Of the Field.

Field

<div style={{ width:"120px"}}> Property <div style={{ width:"200px"}}> Description <div style={{ width:"230px"}}> Configuration Options
Icon Sets the icon displayed in the Browse button. Toggle the visibility switch to show or hide the icon, and set the icon color using the color picker. Icon selector with visibility toggle and color picker.
Background Sets the background color of the input field. Select a theme color or pick from the color picker.
Border Sets the border color of the input field. Select a theme color or pick from the color picker.
Accent Sets the accent color used for interactive elements such as the Browse button. Select a theme color or pick from the color picker.
Text Sets the color of the selected file name text. Select a theme color or pick from the color picker.
Error text Sets the color of validation error messages displayed below the field. Select a theme color or pick from the color picker.
Border radius Rounds the corners of the input field. Number (default: 6). Enter a value or click fx to set it programmatically.
Box shadow Adds a shadow effect around the input field. Set shadow color and properties, or configure programmatically with fx.

Container

<div style={{ width:"120px"}}> Property <div style={{ width:"200px"}}> Description <div style={{ width:"230px"}}> Configuration Options
Padding Controls the internal padding of the component. Switch (Default / None).

---

Need Help?