如何使用JS(Internet Explorer)以编程方式下载文件

时间:2017-10-18 20:34:08

标签: javascript jquery html csv internet-explorer

我有一个网页,其中有一个按钮,当点击它时,生成一个(通过从json转换)csv文件,由浏览器下载。它基本上使用了这个jsfiddle的逻辑。这一切都适用于Chrome,但在IE中,没有任何反应。

 var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);

    // Now the little tricky part.
    // you can use either>> window.open(uri);
    // but this will not work in some browsers
    // or you will not get the correct file extension    

    //this trick will generate a temp <a /> tag
    var link = document.createElement("a");    
    link.href = uri;

    //set the visibility hidden so it will not effect on your web-layout
    link.style = "visibility:hidden";
    link.download = fileName + ".csv";

    //this part will append the anchor tag and remove it after automatic click
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);

问题似乎是Internet Explorer中不存在锚标记的download属性。我一直在看很多文章和SO帖子,但我没有找到一个可以在页面中使用的连贯解决方案。

如何在IE中实现jsfiddle的代码?

1 个答案:

答案 0 :(得分:2)

这是我过去使用过的。这处理IE和非IE。

            var filename = "file.txt";
            var data = "some data";
            var blob = new Blob([data], { type: 'text/csv' });
            if (window.navigator.msSaveOrOpenBlob) {
                window.navigator.msSaveBlob(blob, filename);
            }
            else {
                var elem = window.document.createElement('a');
                elem.href = window.URL.createObjectURL(blob);
                elem.download = filename;
                document.body.appendChild(elem);
                elem.click();
                document.body.removeChild(elem);
            }