N8N form not sending base26 data of uploaded file

n8n Form Trigger not providing base64 (data) of uploaded file in binary output


Hi everyone,

I’m encountering an issue with the Form Trigger node in n8n when handling uploaded files.

:puzzle_piece: Context:

  • I’m using the Form Trigger node to let users upload an image (e.g., product or avatar).

  • The form successfully collects the file.

  • The output from the trigger node includes a binary field with:

    • fileName
    • mimeType
    • fileSize
    • fileExtension

However, the binary object does not contain the data field, which is supposed to hold the base64-encoded file contents, as described in the n8n documentation:

"binary": {
  "Product_Image": {
    "data": "...",          ← ❗ This is missing
    "mimeType": "image/png",
    "fileExtension": "png",
    "fileName": "example.png"
  }
}

Even though the image can be viewed/downloaded from the UI preview, the data is never present in the $binary.Product_Image.data field when accessed from a Set or Function node. This results in errors like:

Binary data was not loaded. Try using this in a node that requires it.

:test_tube: What I Tried:

  • Accessing $binary["Product_Image"].data in a Function node → returns undefined.
  • Using a Set node to reference base64 → same result.
  • Tried Move Binary Data to duplicate → still no data.

The only time the data field appears is after uploading or downloading a file via Google Drive or HTTP — but not directly from a Form Trigger upload.


:white_check_mark: Expected Behavior:

When a file is uploaded via the form, the binary object should include the data field (base64-encoded), or there should be a documented method to materialize it reliably.


:red_question_mark: Questions:

  • Is this expected behavior (lazy-loaded binary)?
  • Is there a proper way to “force” loading base64 data from the form-uploaded file without uploading/downloading again?
  • Could this be improved in future versions of the Form Trigger node?

Thanks in advance!


Hey @firstlinkai hope all is well, welcome to the community.

What makes you think that the binary is supposed to have the base64 content? (I know the answer to this question, but confirming would be nice :smile:).

If you need a base64 content, you can get it by running an Extract node after the form:

This node takes the binary and extracts data into base64 string.

I am not a team member, but I will take a crack at the questions asked:

  • Is this expected behavior (lazy-loaded binary)?

A behaviour that the binary object doesn’t have a base64 automatically embedded is indeed expected.

  • Is there a proper way to “force” loading base64 data from the form-uploaded file without uploading/downloading again?

Yes, you can convert the binary into base64 yourself when needed (see the workflow above).

  • Could this be improved in future versions of the Form Trigger node?

There is not much to improve, some users need b64, some don’t, having it there all there time cannot be considered an improvement, for those who doesn’t need it. Getting b64 from a binary is an easy one step process.

Hope it helps.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.