Services Plugins FAQs

Size difference when uploading to Wasabi using Wasabi cloud Storage Plugin

Hi guys, I’m using the plugin, but I noticed that the file sizes being saved in Wasabi are different from the actual file sizes. Could you please look into this and fix the issue?

Thank you!

This is the uploaded size in Wasabi

Hi @jannat.tariq,

Looking at the comparison between your local files and what is shown in the Wasabi console, the files are actually matching in size, but their file names appear swapped:

  • information-square.svg: Local size is 870 B, but in Wasabi it shows as 749 B (which matches the local size of link-01.svg).
  • link-01.svg: Local size is 749 B, but in Wasabi it shows as 870 B (which matches the local size of information-square.svg).
  • coins-dollar.svg: Matches correctly at 2.65 KB in both places.

This issue typically occurs when multiple files are uploaded simultaneously and the order of file names or metadata gets mismatched during the workflow execution or list processing.

To help pinpoint what is causing the file names and payloads to mismatch during upload:

  1. Check your workflow action settings where the upload is triggered. Ensure the list of file names matches the index order of the list of files being passed into the plugin action.
  2. Verify if you are using a multi-file upload element (or a “For Each” loop) and check how the file metadata array is mapped.

If you are using the exact recommended workflow from the plugin setup, please share a screenshot of your Bubble workflow action settings or the dynamic expressions used during the upload process so we can review the configuration step-by-step.

For further details on plugin configurations and setups, feel free to check our documentation at: https://docs.zeroqode.com/plugins/wasabi-cloud-storage.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi, Here I am creating presigned URLs returned by the plugin I am not swapping the files order

There is also one other thing that’s happening is I upload svg sometimes it converts into pdf for other data types as well. What might be the issue. It gets uploaded like that on wasabi as well

Hi @jannat.tariq,

Thank you for providing the screenshot of your workflow action.

When generating presigned URLs for a list of items using :each item's Location, Bubble processes these lists asynchronously. This can cause the URLs to return in a different order than the original list of files, leading to file metadata and names getting swapped upon upload.

To fix the file swapping issue and address the format converting to PDF:

  1. Avoid using :each item's Location on a list in a single action: Instead, trigger the presigned URL generation and upload step per individual file using a Backend Workflow or a Schedule a workflow on a list action. This ensures each file is processed sequentially with its corresponding name and metadata.
  2. Check Content-Type during upload: When uploading via the presigned URL, verify that the Content-Type header matches the specific file type (e.g., image/svg+xml for SVG files). If the Content-Type header is omitted, incorrect, or defaults to application/octet-stream, Wasabi or the receiving service may assign a generic format or render it incorrectly as a PDF.

Please update your workflow to process files individually and ensure the Content-Type header is defined. If you need step-by-step guidance, refer to the plugin documentation at: https://docs.zeroqode.com/plugins/wasabi-cloud-storage.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi Constantin Raicovici,

Could you please clarify what you mean by “upload step per individual file”? Which backend workflow action should I use to upload the file to Wasabi?

Also, regarding the Content-Type, I don’t see any option in the current action where I can define or set the Content-Type. Could you please let me know where this should be configured?

Thank you.

Hi @jannat.tariq,

To process individual files and set the correct configuration, here is how you can set this up:

Processing Files Individually

When passing a list of files to a single action, Bubble handles the array items concurrently, which leads to index mismatching. To fix this, process each file separately:

  1. Schedule a Workflow on a List: Use the “Schedule a workflow on a list” action to trigger a Backend Workflow. Pass the list of files to this backend workflow, running it for Type of things = File (or your file data type). Inside the backend workflow, execute the “Create Presigned URL” action for This File individually, followed by the upload step. This ensures each presigned URL is mapped strictly to its corresponding file.
  2. Repeating Group / Workflow Loop: Alternatively, if uploading from the front-end, trigger the upload action inside a Repeating Group cell or loop through the files one by one using a custom state index to ensure each URL and file upload completes before moving to the next.

Configuring Content-Type

The Content-Type header specifies the file format (such as image/svg+xml for SVG files) so storage providers do not default to generic formats or render files improperly:

  1. Check the parameters of the upload element or action you are using in Step 3 (“Upload WasabiS3 A”).
  2. Ensure you pass the file’s MIME type dynamically into the Content-Type field (e.g., using This File's file_type or specifying image/svg+xml for SVGs). If using presigned URLs with custom headers, ensure the same Content-Type set during URL creation matches the header sent in the upload request.

For complete additional instructions, please refer to our documentation: https://docs.zeroqode.com/plugins/wasabi-cloud-storage.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

For uploading files at the backend, there is no direct action available. I can use Create Presigned URL, but the other action, Upload File to Wasabi from Another Cloud, is not applicable because I’m using the Wasabi Uploader. What should I do in this case?

Hi @jannat.tariq,

Thank you for clarifying. If you are using the front-end Wasabi Uploader element, you do not need to use backend workflows or manually run the Create Presigned URL action. The Wasabi Uploader element manages the direct upload process from the browser.

Why File Swapping Occurs

When you pass a list of files to the Create Presigned URL action (such as using :each item's Location), Bubble processes and returns those URLs asynchronously. Because the responses return out of order, the uploaded files end up mapped to the wrong file names.

How to Resolve This with Wasabi Uploader

  1. Remove the Create Presigned URL step: If you are using the Wasabi Uploader element, remove Step 2 (Create Presigned URL) from your front-end workflow. The element generates presigned URLs internally when calling the element action (e.g., Upload WasabiS3 A).
  2. Process uploads sequentially: If you need to trigger uploads for multiple files separately, process each file individually (e.g., inside a Repeating Group cell or using a custom state index loop) rather than passing a list to a single action.
  3. Correct Content-Type and File Formats: The Wasabi Uploader element automatically detects the MIME type from the browser. Ensure the original files retain their correct file extensions (e.g., .svg) upon selection. If an SVG loses its extension or MIME type during processing, storage providers like Wasabi may default to generic binary formats or render them incorrectly.

For complete setup guides and element action descriptions, please refer to our documentation: https://docs.zeroqode.com/plugins/wasabi-cloud-storage.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

If I don’t use the presigned URL, what should I provide in this action? The action requires a presigned URL. I am already using a simple looper to send the files one by one, but I am still experiencing the issues shown in the attached screenshot. What should I do now?

image

Hi @jannat.tariq,

Thank you for sharing the workflow and console logs. Let’s address what is happening and how to fix it.

Understanding the Console Errors

  1. "Already uploading, please wait for this operation to complete…": When Step 2 (Upload WasabiS3 A) runs, it initiates an asynchronous file upload in the browser. Because Step 5 (Run next iteration) executes immediately in the workflow sequence, the loop triggers the next iteration while the first file is still uploading. The element cannot process concurrent upload calls, which causes this error.
  2. 404 / undefined Error: The request failed with a 404 error because the target URL evaluated to undefined during the upload request. This occurs when the Object Key or presigned URL generated in Step 1 evaluates to an empty or invalid value for that iteration.

How to Fix the Setup

To make the looper work smoothly with presigned URLs:

  • Pass a single item in Step 1: In Step 1 (Create Presigned URL), ensure the Object Key references only the single item corresponding to the current loop index (for example, List of Files:item # Current Iteration's Name).
  • Wait for the upload event before running the next iteration: Remove Step 5 (Run next iteration) from this main workflow. Instead, create a separate workflow triggered by the plugin element event “A WasabiS3 file is uploaded”. Place the “Run next iteration” action inside that event workflow so each file finishes uploading before the next iteration begins.
  • Verify file data: Double-check that the file location and name passed to Step 1 are not empty to prevent the undefined path 404 error.

For further configuration details, feel free to refer to our documentation: https://docs.zeroqode.com/plugins/wasabi-cloud-storage.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

There is no issue with single file when there are multiple files then this issue occurs. I did move the Run next iteration in “A WasabiS3 file is uploaded” event. But still I am getting same error message when multiple files are uploaded

Hi @jannat.tariq,

Thank you for providing the additional context.

The “Already uploading” error occurs because the Upload WasabiS3 A action is designed to process all queued files in the uploader element in batch, rather than being called repeatedly inside a loop. When a looper triggers Upload WasabiS3 A on subsequent iterations, the element is still actively handling the upload session, which blocks new upload calls.

Recommended Setup (Without a Looper)

To upload multiple files properly with presigned URLs, remove the looper workflow entirely and set up the actions as follows:

  1. Generate all Presigned URLs in one action: In Step 1 (Create Presigned URL), pass the entire list of Object Keys (for example, List of Files's Location). This action returns a list of presigned URLs.
  2. Trigger the upload once: In Step 2 (Upload WasabiS3 A), pass Result of step 1's Presigned URLs into the Presigned Urls field. The element will handle uploading all files in its queue automatically using the list of presigned URLs.

Handling Database Records Per File

If you need to create database items for each uploaded file:

  • Do not use a looper to initiate the uploads.
  • Use the plugin element event “A WasabiS3 file is uploaded”. This event triggers individually as each file completes uploading, providing access to This WasabiS3's uploaded file URL to create or update database records one by one.

For detailed information on configuring element events and actions, please visit our documentation: Wasabi Cloud Storage.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

I was doing that initially, but the issue is that the files get swapped after uploading. Sometimes the data type gets changed for example, an SVG may become a PDF and there are several other similar cases. The file sizes also get swapped. That’s the main issue I’m facing with this approach.

Hi @jannat.tariq ,

Why File Swapping and Type Changes Occur

When presigned URLs are generated for a list of files simultaneously, Bubble processes those API requests asynchronously. Because network responses resolve out of order, the list of returned presigned URLs ends up in a different sequence than the list of files in your uploader queue.

When the uploader assigns an out-of-order presigned URL to a file:

  • File names and file sizes get swapped.
  • If a presigned URL was generated for a PDF file’s MIME type, uploading an SVG through that specific URL causes Wasabi to assign the wrong Content-Type header and render it as a PDF.

How to Resolve This Setup

To keep file metadata, sizes, and file types strictly aligned without triggering the “Already uploading” error, process the files 1-by-1 using a custom state index driven by the plugin event:

1. Create a Custom State for Tracking Index

  • Set up a custom state on your page (for example, Current_Index as a Number, with a default value of 1).

2. Set Up the Initial Upload Workflow

  • When your upload trigger is clicked, set Current_Index to 1.
  • Step 1 (Create Presigned URL): Generate the presigned URL for a single file using List of Files:item # Current_Index.
  • Step 2 (Upload WasabiS3): Pass the result of Step 1 to upload List of Files:item # Current_Index.

3. Advance to Next File via Plugin Event

  • Create a workflow triggered by the plugin event “A WasabiS3 file is uploaded”.
  • Add an action to increment the state: Current_Index = Current_Index + 1.
  • Add a condition to this event workflow: Only when Current_Index <= List of Files:count.
  • Re-trigger the single-file upload workflow inside this event.

This event-driven setup guarantees that every individual file receives its exact matching presigned URL and Content-Type, while ensuring the uploader finishes its active upload session before beginning the next.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi @jannat.tariq,

I am following up to check if you had a chance to try the event-driven setup using the custom state index described above.

Please let us know if this resolved the file swapping issue or if you need any further assistance with your workflow.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3