Uploaded image attachments are not valid while importing from airtable base

Are you using our SaaS platform (Baserow.io) or self-hosting Baserow?

SaaS

What are the exact steps to reproduce this issue?

I recently imported an Airtable base into Baserow using a public shareable link. The base included a large number of image attachments. While most of the images imported correctly, I noticed that some of them aren’t valid and can’t be opened after the import.

Here’s an example of one of the invalid image URLs:

Has anyone else experienced this issue, or is there a known fix for it?

Attach screenshots, videos, or logs that demonstrate the issue.

Hi @gjk, have you reviewed the import report (it’s included as one of the tables in the imported database)? Can you see any information about those images?

Hi @olgatrykush, I don’t see anything mentioned about the tables having issues in the report.

@gjk
If you try importing once again - do you have the same files having issue being imported?

Can you provide link to one of those broken files (if possible the same link on airtable side and one on baserow after import)

Hi @Przemek
I tried importing the same workspace into our self hosted instance too, same thing happened.
I have already given the broken link above, I am sharing it again

Broken baserow URL: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/user_files/b1oFRQ8he7Sh18RrIcbO9zaZLAdsS9t8_140af670990494ba66d0ae2a246067367a08bd4131629b245039484ce3295b1e.png

Working airtable URL: https://v5.airtableusercontent.com/v3/u/40/40/1745445600000/N4NNtumgcE2Q4O6IUGoO4w/ozG-x1Hkl4g3LizxuhAPCMMfKxNU_IiUBqqdw9S2MqBnlapz8uExbKDrT1dncgN09IKXA7iqp9BKhs33ddz2tZ3LPTN7l6SheWfl26-ICIiNREt-S_peTtGK38wKag1QFeN2jazLTJxAeAODMh88AA/PAljii43tng4DTLNs0Tstu7kpwAqaaPcuOxy6cB-lp8

Thanks @gjk for sharing links (especially second one)

For some reason those attachments expire before they are processed and that’s reason for broken images.

I’ve created issue for that Attachments expire before being improted (#3581) · Issues · Baserow / baserow · GitLab

Hi @gjk

we’re looking into this issue, but we cannot replicate it.

Do you have any guidance to help us reproduce it? Or, even better, a link we can use to try importing a workspace with this issue? If so, please send the link privately to me or to @Przemek.

Hi,
I have one because it happens to me too, in a different way maybe.

Airtable import fails to import attachment files from a public shared view

Description

When importing an Airtable base into Baserow using a public Airtable share URL, none of the files contained in the Airtable attachment field are imported.

The attachment field itself is created in Baserow, but all of its cells remain empty.

Baserow generates one import report entry per attachment, with messages similar to:

File | Cell | Achats | Other
Field: Attachments, Row: 1, File: .directUploadAttachment_965032fa5d295852d6acee71148a3d26_25069f32

The affected Airtable field is a standard multipleAttachments field named Attachments.

Environment

  • Baserow version: 2.3.3

  • Installation type: self-hosted

  • Host: Synology NAS

  • Deployment: Container Manager / Docker

  • Airtable import method: public Airtable share URL

  • Imported table: Achats

  • Attachment field: Attachments

Steps to reproduce

  1. Create or use an Airtable base containing a standard attachment field.

  2. Add image files to that attachment field by importing them from external URLs.

  3. Create a public Airtable share URL.

  4. Open the public URL in a private browser window and confirm that:

    • the images are visible;

    • the images can be opened;

    • the images can be downloaded;

    • the downloaded files are valid image files.

  5. In Baserow 2.3.3, create a new database by importing the Airtable public share URL.

  6. Make sure that file importing is not skipped.

  7. Wait for the import to finish.

  8. Open the imported table and inspect the attachment field.

  9. Open the Baserow Airtable import report.

Expected behavior

Baserow should:

  • download every Airtable attachment;

  • upload it to Baserow’s own file storage;

  • preserve the attachment in the corresponding row;

  • preserve or reconstruct a valid filename and file extension when possible.

Actual behavior

  • The Attachments field is created.

  • None of the attachment cells contain files.

  • The import report contains one error per file.

  • The reported filenames use Airtable internal-looking names such as:

.directUploadAttachment_965032fa5d295852d6acee71148a3d26_25069f32

  • No useful error details are provided beyond the generic category Other.

Checks already performed

Airtable public access

The same public Airtable share URL was opened in a private browser window without being logged into Airtable.

The attachments could be:

  • opened;

  • downloaded;

  • saved as valid image files.

This indicates that the attachment URLs are publicly accessible.

Baserow file storage

A new image was manually uploaded into the same Baserow attachment field.

The image remained available after reloading the page.

This indicates that Baserow’s file storage and persistence are working correctly.

Comparison with NocoDB

The same Airtable public share URL was imported into a self-hosted NocoDB instance.

NocoDB successfully downloaded and imported the attachment images.

This suggests that the source files and the Airtable public share permissions are valid, and that the issue is specific to Baserow’s Airtable attachment importer.

Additional information

The files were originally added to Airtable using external image URLs. However, Airtable exposes them as normal attachments, and they can be downloaded from the public shared view.

The Airtable schema identifies the field as:

{
  "type": "multipleAttachments",
  "name": "Attachments"
}

The issue affects all tested attachments, not just a single file or row.

Possible area to investigate

The import report appears to treat Airtable’s .directUploadAttachment path component as the filename, without a recognizable file extension.

It may be useful to check whether the importer correctly handles:

  • Airtable .directUploadAttachment URLs;

  • filenames missing from the final URL path;

  • filenames provided through HTTP response headers;

  • MIME-type-based extension detection;

  • redirects from Airtable’s attachment CDN;

  • attachment responses without a Content-Length header;

  • URL-encoded or temporary Airtable attachment URLs.

Requested improvement

Please provide more detailed error information in the import report when an attachment download fails, including where possible:

  • HTTP response status;

  • final URL after redirects;

  • response MIME type;

  • detected filename;

  • detected file size;

  • download exception message.

The current generic Other status does not provide enough information to diagnose the failed attachment imports.

Hello @kozhco, sorry about the issue! Would you mind sharing the Airtable base URL with me in a private message so I can test it?

Hey @kozhco, thanks for providing all the assets we needed for the investigation. We were able to confirm that this is a bug. We’ve created an issue to track and fix it: File attachment import fails when signed URL mapping is incomplete · Issue #5799 · baserow/baserow · GitHub.

Great!
Glad it’s been helpful