I\'am trying to download temporary result calculated by JavaScript. Say I have a string str
, I want to download a file contains str
and named it as
You can achieve this using the download
attribute for elements. For example:
Download Your Foo
This attribute indicates that the file should be downloaded (instead of displayed, if applicable) and specifies which filename should be used for the downloaded file.
Instead of using window.open()
you could generate an invisible link with the download
attribute and .click()
it.
var str = "Name, Price\nApple, 2\nOrange, 3";
var uri = 'data:text/csv;charset=utf-8,' + str;
var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download = "data.csv";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
Unfortunately this isn't supported in all browsers, but adding it won't make things worse for other browsers: they'll continue to download the files with useless filenames. (This assumes that you're using a MIME type is that their browser attempts to download. If you're trying to let the user download an .html
file instead of displaying it, this won't do you any good in unsupported browsers.)