I've got a field in one of my tables that I can use as part of a URL. I've used "View as a link or image" settings on the table visualisation to set this up and it references the correct file.
I want to be able to download the file referenced by the URL rather than open it in the browser. I can't figure out how to do this in Metabase. I think the link html needs to include the download="filename.txt" attribute in order for this to work.
I've tried using dashboard click behaviour for this too but no success there either.
I'm happy to open a new feature request in Github for a toggle option for this, but thought I'd check if anyone's got a work around first.
For context the URL that I'm building is actually a data url not a physical file, but from my testing it doesn't seem to matter, if I can get the download="filename.txt" attribute on the <a> element it works.
Hi @notrom
There's currently no such behavior. You could proxy the request, where you apply download headers.
Or alternatively right-click and select "Save link as ...", which is available in most browsers.
Thanks again. I've taken the path of least resistance and just created a little bookmarklet that when clicked looks for links with my data URL media type (text/tr5) and adds a download attribute to the a elements.
I had to add the "download=filename" to the middle of my data url so it strips that out too. This means the bookmarklet works on both dashboards and questions. I haven't yet check about public questions
For reference:
javascript:(() => {
var items = document.querySelectorAll('a[href*="data:text/tr5,"]');
for (let index = 0; index < items.length; index++) {
var item = items[index];
var segments = item.href.split("|");
if (segments.length === 3 && segments[1].startsWith("download=")) {
var dlattr = segments[1].replace("download=", "");
item.href = segments[0]+segments[2];
item.setAttribute("download", dlattr + '.tr5');
}
}
})();