How to set a file name using window.open

前端 未结 4 1723
孤独总比滥情好
孤独总比滥情好 2020-11-28 05:44

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

4条回答
  •  無奈伤痛
    2020-11-28 06:10

    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.)

提交回复
热议问题