Skip to main content
Skip table of contents

Transferring file from user's device to Pixel-Streamed Unreal Applications

In this document we will explain how to enable users to upload files directly from their browser to an Unreal Engine application running on the Eagle 3D Streaming (E3DS) platform.

The E3DS platform automatically handles the file selection dialog and stores the uploaded file in your project’s directory.

Video Preview

https://youtu.be/vdMV73J0dgw

Demo URL:
https://connector.eagle3dstreaming.com/v5/demo/FeaturesPluginDemo/featuresPluginDemo

In this demo, pressing the G key on your keyboard will open a window that allows you to upload your file.

You can initiate the file transfer using either of the following two methods:

Method 1. Using the E3DS Features Plugin (Recommended)

Prerequisite:

Before proceeding, ensure you have downloaded and installed the E3DS Features Plugin in your Unreal Engine project. For detailed instructions, refer to:
Download and Install the E3DS Features Plugin

Follow the steps below:

(i) Use the Blueprint function Transfer File from User Browser to Unreal, and specify the destination path (for example: ProjectDirectory/Saved/).

(ii) The plugin will automatically handle the upload process.

image-20250805-074549.png

Figure 1. Using the E3DS Features Plugin

Method 2. Sending a Message Directly (Not Recommended)

If you’re not experienced with Blueprint development, do not use Method 2. Please use Method 1 instead — Method 2 is more error-prone and increases the chance of implementation mistakes.

(i) Use the Send Pixel Streaming Response node in Blueprints to send the following JSON object:

CODE
{"cmd": "sendLocalFileToUE4","pathToSaveFile": "%AnyPathInsideProjectDirectory%"}

(ii) Replace %AnyPathInsideProjectDirectory% with the relative path inside your project directory where you want to store the file.

Paths must be relative to the Project Directory (absolute paths like C:\ are not supported).

image-20250805-074150.png

Figure 2. Sending a message directly

File Selection and Upload Process

Regardless of the method you choose, once the upload request is sent, the Eagle 3D Streaming platform will open a file selection dialog in the browser, allowing the user to choose the file to upload.

image-20250805-073725.png

Figure 3. Uploading a file

Handling Upload Status and Notifications

When transferring files from the browser to a Pixel-Streamed Unreal Application, the Eagle 3D Streaming platform provides multiple callbacks to help you track the status of the file selection and upload process.

These events can be used to determine whether the user started uploading, completed uploading, or canceled the file selection.

Available Events

Event

Description

{"cmd":"onUserSideFileSelected","filename":"<filename>"}

Triggered when the user selects a file in the browser’s file selection dialog. This indicates that the upload process has started.

{"cmd":"onUserSideFileProcessingFinished","filename":"<filename>"}

Triggered when the file has been completely uploaded and processed on the browser side.

{"cmd":"onUploadedFileAvailable","filename":"<filename>"}

Sent from the application side when the uploaded file becomes available inside the Unreal project directory. This confirms a successful upload.

{"cmd":"onUserSideFileSelectionCanceled"}

Triggered when the user opens the file selection window but does not select a file and closes the dialog instead. This allows you to handle user cancellation gracefully.

Example Use Case

If your Unreal application checks for uploaded files using a timer, you can use these events to manage file state transitions more efficiently:

  1. When onUserSideFileSelected is received → mark upload as in progress.

  2. When onUserSideFileProcessingFinished or onUploadedFileAvailable is received → mark upload as completed.

  3. When onUserSideFileSelectionCanceled is received → mark upload as canceled, so the timer does not keep waiting.

Verifying the Upload

To confirm the file upload has completed, use the File Exists node.

  • This node takes a full file path and returns whether the file exists.

  • For example, if you expect test.jpg to be located in ProjectDirectory/Saved/test.jpg, you can check for its presence and print "Yes" or "No" accordingly.

image-20250804-134626.png

Figure 4. Verifying whether the file upload is completed

Example Behavior:

  • Initially, "No" is printed because the file does not exist.

  • As soon as the upload is complete, the output changes to "Yes".

image-20250804-134528.png

Figure 5. Verify whether the File Upload is Completed or Not

Troubleshooting

File selection dialog does not appear
  • Ensure the in-game event or function that triggers the upload is actually called.

  • Double-check the JSON message format (if using the manual method).

  • If unsure, try using the E3DS Features Plugin method.

File is uploaded but Unreal cannot find it
  • Ensure the file is saved inside your Project Directory only.

  • Saving files outside the project directory (e.g., C:\ root or custom folders outside the project) is not supported.

  • All uploaded files are virus scanned — any potentially harmful files will be rejected.

 


Need help?

🛠️ Contact our Support Team

💬 Join the Community on Discord

🆓 Get Started for free

 

Follow us on:

Facebook | GitHub | LinkedIn | YouTube

 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.