Thursday, May 9, 2024
 Popular · Latest · Hot · Upcoming
142
rated 0 times [  143] [ 1]  / answers: 1 / hits: 118161  / 13 Years ago, fri, august 12, 2011, 12:00:00

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 data.csv, I'm using the following code:



window.open('data:text/csv;charset=utf-8,' + str);


The file can be successfully downloaded, but how can I name the file data.csv automatically rather than set the name by hand each time?


More From » download

 Answers
136

You can achieve this using the download attribute for <a> elements. For example:



<a href=1251354216241621.txt download=your-foo.txt>Download Your Foo</a>


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, PricenApple, 2nOrange, 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.)


[#90659] Thursday, August 11, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
austynp

Total Points: 505
Total Questions: 118
Total Answers: 106

Location: Tajikistan
Member since Sun, Aug 29, 2021
3 Years ago
austynp questions
;