Oct 04, 2022 04:34 PM
I have successfully gotten airtable to upload a PNG and a PDF from Dropbox.
But when airtable processes the file, the type is listed as text/html
If I include a type field, I get an error:
{
"fields": {
"Type": "Test",
"Comment": "",
"Attachments": [
{
"url": "https://www.dropbox.com/s/XXXXXXX/robots.png?dl=1",
"type": "image/png"
}
],
"User": "",
"Part": [
"recFI6JhdkwTCeB9q"
]
}
}
And I receive this:
{
"error": {
"type": "INVALID_ATTACHMENT_OBJECT",
"message": "Invalid attachment object for field Attachments: {\n \"url\": \"https://www.dropbox.com/s/XXXXXXXX/robots.png?dl=1\",\n \"type\": \"image/png\"\n}"
}
}
But if i just strio out the “type” there is no error, just the type is wrong.
Solved! Go to Solution.
Oct 05, 2022 02:43 AM
You’re welcome! Glad I could help! :slightly_smiling_face:
To address your other question:
No, the ?dl=1 parameter doesn’t break the file upload to Airtable. You could remove that parameter altogether and your upload to Airtable still wouldn’t work.
The reason it isn’t working is because you’re using Dropbox’s share link that starts with https://www.dropbox.com
That share link doesn’t actually give you the link to the file itself. It is giving you a link to a Dropbox webpage that has the file embedded in it. If you go to your link in a web browser, you will see that you are not taken to the file itself.
In order to extract the actual file from that webpage, you would need to change the beginning of your share link to https://dl.dropbox.com
That will extract the file itself, and you can also see the difference if you go to that URL in your web browser.
Oct 04, 2022 06:18 PM
Attachments accept a URL parameter and an optional filename parameter. There is no type parameter.
You can find this information in the Airtable REST API documentation.
Oct 04, 2022 07:47 PM
Cresting a new attachment involves only a url and an optional file name. However, the read value of an attachment field does include a file type.
It could be that Airtable is having a hard time determining the file type from the url because your url has query parameters and does not end in a file name. If you include the file name in the value you send to Airtable, Airtable may have more success in determining the file type.
Oct 04, 2022 09:06 PM
Ah, Thank you. I was using the custom api page for my base to get started,bdidnt think to check the actual documentation to see if the parameter was valid as an input.
Oct 04, 2022 09:08 PM
Ah! Got it, the dl=1 param breaks the parse for the file extension. I’ll try out the filename param later.
Is there a way to update the type manually? Right now it’s just pdfs and pngs, but we will probably upload binaries and various txt formats.
Oct 05, 2022 02:43 AM
You’re welcome! Glad I could help! :slightly_smiling_face:
To address your other question:
No, the ?dl=1 parameter doesn’t break the file upload to Airtable. You could remove that parameter altogether and your upload to Airtable still wouldn’t work.
The reason it isn’t working is because you’re using Dropbox’s share link that starts with https://www.dropbox.com
That share link doesn’t actually give you the link to the file itself. It is giving you a link to a Dropbox webpage that has the file embedded in it. If you go to your link in a web browser, you will see that you are not taken to the file itself.
In order to extract the actual file from that webpage, you would need to change the beginning of your share link to https://dl.dropbox.com
That will extract the file itself, and you can also see the difference if you go to that URL in your web browser.
Oct 05, 2022 10:39 AM
That was it! using “filename”:“robots.png” did not work (came up as application/binary).
Now, I need to figure out from the dropbox API how to get that link and not the www link.
Oct 05, 2022 12:35 PM
I don’t know if the Dropbox API gives the ability to retrieve that link, so you might need to work out some other methodology of changing the URL to the proper download URL.
You could easily do this with a formula field in Airtable (use the “substitute” function to replace “www” with “dl”).
You could also easily do this with a Javascript.
On my end, I don’t actually know Javascript, so I handle these sorts of automations using Make.com, where they give you the code for how to do this substitution at the very bottom of this page. (It’s not letting me give you the link to the exact part of the page, so just scroll all the way to the bottom.)
Oct 05, 2022 12:41 PM
In other words, I have Make.com handle the entire process for me — I have Make grab the file from Dropbox, change the URL to the proper download URL, and then upload that file to Airtable.
Oct 05, 2022 12:51 PM
It does.
String url = meta.getUrl();