--- title: "Working With Files in Unqork" slug: "working-with-files-in-unqork" description: "Learn how to upload, manage, and store files in Unqork, including cloud storage options, file size limits, and external service integrations." updated: 2026-06-24T16:12:15Z published: 2026-06-24T16:12:15Z canonical: "docs.unqork.io/working-with-files-in-unqork" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.unqork.io/llms.txt > Use this file to discover all available pages before exploring further. # Working With Files in Unqork In Unqork, you can use the [File](/v1/docs/file-component) component to upload, manage, and store items like supported documents and images. This reference guide explores the considerations, expectations, and limitations when **working with files in Unqork**. ## File Storage Expectations This section describes what you should expect when storing files in Unqork or an external storage system. ### Storing Files in Unqork To store files in the Unqork server, **Creators** can either: - Set the [File](/v1/docs/file-component#Data) component's **Store Data in Database** setting to ![A toggle switch indicating an on/off state for a user interface element.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 1.png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(ON)** and create an Unqork submission. - Manually send the file using a [Plug-In](/v1/docs/plug-in-component) component. Storing to the Unqork servers provides you with the following advantages: - No extra service configuration is needed because files are submitted using Unqork Submission Attachments API (application programming interface) calls. - Before uploading to the server, the File component ensures all file type/extension validations are correct. Files that contradict the **Set File Formats to Accept** setting are rejected before uploading to the server. - After passing any front-end validation, Unqork scans for malware before uploading the file to the server. - Files are stored in the cloud with no practical storage quota. - A **Cloud Storage Delivery URL** is generated with a unique signature when the user initially submits the file or accesses the submission where the file is stored. Only the user who generates the URL is authorized to utilize that specific URL. Cloud Storage Delivery URLs expire after **24 hours**. > [!TIP] > To learn more about Cloud Storage Delivery, see our API documentation: [https://developers.unqork.io/#section/Cloud-Storage-Delivery](https://developers.unqork.io/#section/Cloud-Storage-Delivery). ### Cloud Storage Delivery URL - Cloud storage files are access-controlled using a signature appended to the generated Cloud Storage Delivery URL. This signature is specific to the logged-in user. So, only that user can use that particular link to the file. The user can be an actual Unqork user account or a service account. For example, an API user. - When the file is first uploaded, the returned Cloud Storage Delivery URL can be saved in a submission. Each time a user with access to that submission retrieves the URL, a new signature is generated or updated specifically for that user. That user can now access the file using the full Cloud Storage Delivery URL, including the new signature. ### Storing Files Externally To store files using an external file service (outside of the Unqork servers), Creators must set the [File](/v1/docs/file-component#Data) component's **Store Data in Database** setting to ![A toggle switch in the 'on' position, indicating an active setting or feature.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 2(1).png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(OFF)** and use a [Plug-In](/v1/docs/plug-in-component) component to send the file. External file services include Google Drive, Dropbox, and so on. Consider the following when storing externally: - Creators must set up an API account with an external file service and configure the service in [Services Administration](/v1/docs/services-administration). - Creators are subject to the external file service's pricing and usage quotas. - Creators and the external file service assume all responsibility for virus scanning. For example, see the documentation for integrating AWS S3 malware scanning in your application: [https://aws.amazon.com/blogs/apn/integrating-amazon-s3-malware-scanning-into-your-application-workflow-with-cloud-storage-security/](https://aws.amazon.com/blogs/apn/integrating-amazon-s3-malware-scanning-into-your-application-workflow-with-cloud-storage-security/). > [!NOTE] > Virus scanning configuration is dependent on the external file service used. - Permission to access the files depends on the external file service and its configuration. ## How Files Are Represented in Unqork Submission Data The [File](/v1/docs/file-component) component’s submission data is an array of objects, where each object represents a single file. How each object is represented depends on your configuration. There are two main representations: - As a Base64 string. - As an object stored in the cloud. ### Cloud Storage By default, the File component's **Parse Files on Upload** is set to ![A toggle switch in the 'on' position, indicating an active setting or feature.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 2(1).png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(OFF)**. The file’s data object becomes a reference, with the file stored in the cloud the moment an Unqork submission is created. Here's an example of a single-file object stored before Unqork submission: ```json [     {         "storage": "cloud",         "name": "Screenshot 2023-03-15 at 15.13.08.png",         "id": "c83ffe8b-6e90-4920-8e37-44a46f21cf42",         "size": 235157,         "type": "image/png"     } ] ``` > [!WARNING] > The Vega File component stores the file URL under the `url` property and not the `data` property, as it does in Centauri. Here's an example of a single-file object stored after Unqork submission: ```json [     {         "storage": "cloud",         "name": "Screenshot 2023-03-16 at 14.23.25.png",         "id": "edd77456-fb52-4664-a2c0-5442fab7c7b7",         "size": 793223,         "type": "image/png",         "data": "https://testx.unqork.io/fbu/files/submissionBase64/c79910d684253c282910315221269d9d.png?signature="     } ] ``` ### Base64 Representation When the [File](/v1/docs/file-component#Advanced) component's **Parse Files on Upload** is set to ![A toggle switch indicating an on/off state for a user interface element.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 1.png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(ON)**, the file’s data is encoded as a Base64 string that becomes part of the component’s submission data. On submitting to Unqork, the file’s data object updates to a cloud storage link, retrieving and resolving the Base64 string. Therefore, when retrieving the Unqork submission, the file’s submission reduces in size. Here's an example of a single Base64 file object stored before Unqork submission: ```json [     {         "storage": "base64",         "name": "Screenshot 2023-03-15 at 15.59.06.png",         "url": "data:image/png;base64,",         "size": 16760,         "type": "image/png",         "data": ""     } ] ``` Here's an example of a single Base64 file object stored after Unqork submission: ```json [     {         "storage": "base64",         "name": "Screenshot 2023-03-15 at 15.59.06.png",         "url": "https://testx.unqork.io/fbu/files/submissionBase64/15f80f953695e1e89a83123b42dc58e8.png?signature=",         "size": 16747,         "type": "image/png",         "data": "https://testx.unqork.io/fbu/files/submissionBase64/94896b69237d0dd91a9f58c5e5d54202.png?signature=",         "imageSrc": "https://testx.unqork.io/fbu/files/submissionBase64/15f80f953695e1e89a83123b42dc58e8.png?signature="     } ] ``` > [!NOTE] > Unless you need to read or display file data in your UI (for example, read data from an XLSX/CSV file or render a thumbnail preview), it is recommended that you avoid storing files as Base64 strings. Base64 is an inefficient way to encode file data and causes a 33% increase in the original file size—and even more for smaller files. ```json [     {         "storage": "cloud",         "name": "Screenshot 2023-03-15 at 15.13.08.png",         "id": "c83ffe8b-6e90-4920-8e37-44a46f21cf42",         "size": 235157,         "type": "image/png"     } ] ``` ```json [     {         "storage": "cloud",         "name": "Screenshot 2023-03-16 at 14.23.25.png",         "id": "edd77456-fb52-4664-a2c0-5442fab7c7b7",         "size": 793223,         "type": "image/png",         "data": "https://testx.unqork.io/fbu/files/submissionBase64/c79910d684253c282910315221269d9d.png?signature="     } ] ``` ## File Size Limits The accepted file size limit depends on the configuration and where you store the file. File size limits are not dependent on the device (desktop/mobile, Windows/Mac, iOS/Android). File size limits are enforced regardless of the value entered in the File component's **Set Maximum Size** field. > [!NOTE] > Any file-related or API request lasting longer than five minutes is not supported and will fail. If storing the files in Unqork (setting the [File](/v1/docs/file-component#Data) component's **Store Data in Database** to ![A toggle switch indicating an on/off state for a user interface element.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 1.png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(ON)**), the file size limit depends on the [File](/v1/docs/file-component#Advanced) component's **Parse Files on Upload** setting: - When **Parse Files on Upload** is set to ![A toggle switch indicating an on/off state for a user interface element.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 1.png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(ON)**, the file size limit is approximately **18 MB** (the entire submission payload). The limit decreases if the Unqork submission contains other component data. - When **Parse Files on Upload** is set to ![A toggle switch in the 'on' position, indicating an active setting or feature.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 2(1).png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(OFF)**, the file size limit is configurable by environment administrators. The default limit is **100 MB per file**, configurable up to **2,048 MB**. To configure this limit, see [Environment Administration](/v1/docs/environment-administration). Files above **100 MB** are not automatically scanned for viruses. ## File Compression This section focuses on image file compression expectations and limitations when using the [File](/v1/docs/file-component) component. - Only PNG & JPG file types can be compressed. - Compression applies regardless of the device, operating system, or image source (desktop/mobile, Windows/Mac/Android/iOS, file picker/image, library/direct photo capture). - Compression is lossy and may somewhat reduce image quality. - Image compression is not applied when storing files in Unqork as cloud storage. Storing files in cloud storage occurs when the File component's **Parse Files on Upload** setting is set to ![A toggle switch in the 'on' position, indicating an active setting or feature.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 2(1).png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(OFF)**. - The File component's **Display Thumbnail Images or Icons** and **Set Image Width** settings do not affect compression or storage of the file. These settings only affect how the image thumbnail renders. ## Sending and Retrieving Files Using a Plug-In Component **Creators** can also manually send or retrieve files captured from the [File](/v1/docs/file-component) component using a [Plug-In](/v1/docs/plug-in-component) component. ### Sending Files Using a Plug-In Component If storing the files externally (setting the File component's **Store Data in Database** to ![A toggle switch in the 'on' position, indicating an active setting or feature.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 2(1).png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(OFF)**), the file size upload limit depends on the Plug-In component's file request limit: - When submitting a file to an external file service using a Plug-In component, the file size limit is **500 MB per file**. > [!TIP] > Check the external file service's documentation to verify the file size limits accepted by their API. > [!NOTE] > For larger files, some external file services require batching (or separating) file upload requests into multiple fragments. The Plug-In component does not support batching file uploads. When sending files to a server-side executed module using a proxy request, the limit is **25 files** at **500 MB total**. This scenario is specific to the **Execute via Proxy - POST** Unqork service of the Plug-In component. > [!WARNING] > There is a 50 MB limit for all JSON payloads to internal services in Unqork and to external services. ### Retrieving Files Using a Plug-In Component Creators can retrieve files already stored in the Unqork cloud storage using a Plug-In component and the following configuration: - To retrieve as **binary**, use a Plug-In component from the context of a server-side execute module with: 1. The **Data Source URL** value is set to a cloud storage URL. For example, `{{data.fileUrl}}`. 2. The `GET` Request Type. 3. The Expect Binary Response setting is set to ![A toggle switch indicating an on/off state for a user interface element.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 1.png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(ON)**. - To retrieve as **Base64**, consider using the resolveBase64 option or two Plug-In components with the following settings: 1. **Plug-In One**: A **GET** request with Expect binary response set to ![A toggle switch indicating an on/off state for a user interface element.](https://cdn.us.document360.io/15548f06-2fba-434c-b0c1-5df88317dbd7/Images/Documentation/Group 1.png?sv=2026-02-06&spr=https&st=2026-11-09T16%3A59%3A11Z&se=2026-11-09T17%3A59%3A11Z&sr=c&sp=r&sig=0%2Bptbb6t7DSKPbUt0hzFg0XugQNcSN%2BpX%2B995fABZdw%3D) **(ON)**. 2. **Plug-In Two**: A **POST** request. > [!NOTE] > Using the **contents** Output Type in a [Plug-In](/v1/docs/plug-in-component) component to retrieve the Base64 of a file has a limit of **10MB**. ## File Component Limitations The following are important limitations of the [File](/v1/docs/file-component) component: - The File component is not a media player or media renderer. It does not support viewing or playing the files it accepts. The only exception is the [**Display Thumbnail Images of Icons**](/v1/docs/file-component#Display) setting. - The File component is not supported inside the following components: - [Advanced Datagrid](/v1/docs/advanced-datagrid-component) component - [Data Grid](/v1/docs/data-grid-component) component - [Freeform Grid](/v1/docs/freeform-grid-component) component - [Uniform Grid](/v1/docs/uniform-grid-component) component ## Other Considerations Below are some final considerations to keep in mind when dealing with files in Unqork. - Never augment, extend, or otherwise modify file objects in submission data. These file objects represent an Unqork file, and altering them can cause issues with file uploads and downloads. - Using [logic components](/v1/docs/data-event-processing) to trigger a file download using the **page** or **pageOpen** Output Types is supported. But the value used with these Output Types must be a valid URL. Ideally, this is the [Cloud Storage Delivery URL](https://developers.unqork.io/#section/Cloud-Storage-Delivery). - The following are some helpful formulas when dealing with file data: | Formula | Description | Syntax | | --- | --- | --- | | BASE64 | Transforms a binary value into a Base64 encoded string. | **BASE64**(value) | | TOBASE64 | Transforms a binary value into a Base64 encoded string. | **TOBASE64**(value) | | FROMBASE64 | Converts the Base64 encoded string into a binary value. | **FROMBASE64**(value) | APIs (application programming interfaces) are a set of protocols and definitions developers use to build and integrate application software. APIs act as the connective tissue between products and services. Malware is software designed to disrupt, damage, or gain access to a computer system. Also known as Record Data. Submission data consists of information saved by Unqork components. View submission data by using the angular command, or in Record Collections. Also known as Record Data. Submission data consists of information saved by Unqork components. View submission data by using the angular command, or in Record Collections. An array is a type of object that stores one or more data types. Data types supported in arrays include numbers, strings, and objects. An object is a type of data structure that represents a single, self-contained entity that acts as a container for the characteristics of that entity. Base64 is an encoding and decoding technique used to convert binary data to an ASCII (American Standard for Information Interchange) text format.