8

我正在使用插件从表中生成 csv 文件,该文件正在以“下载”文件名下载,如何更改文件名,例如 dowload.csv

var csv = $("#table").table2CSV({delivery:'download'});
window.location.href = 'data:text/csv;charset=UTF-8,'+ encodeURIComponent(csv);
4

1 回答 1

33

我编写了一个工具,您可以使用该工具将文件保存到具有自定义文件名的本地计算机的下载文件夹中,如果在客户端计算机上可以的话。

在撰写本文时,您需要 chrome、firefox 或 IE10 才能获得该特定功能,但如果可用的话,此工具会退回到未命名的下载,因为有总比没有好......

供您使用:

download(csv, "dowload.csv", "text/csv");

和神奇的代码:

function download(strData, strFileName, strMimeType) {
    var D = document,
        a = D.createElement("a");
        strMimeType= strMimeType || "application/octet-stream";


    if (navigator.msSaveBlob) { // IE10
        return navigator.msSaveBlob(new Blob([strData], {type: strMimeType}), strFileName);
    } /* end if(navigator.msSaveBlob) */


    if ('download' in a) { //html5 A[download]
        a.href = "data:" + strMimeType + "," + encodeURIComponent(strData);
        a.setAttribute("download", strFileName);
        a.innerHTML = "downloading...";
        D.body.appendChild(a);
        setTimeout(function() {
            a.click();
            D.body.removeChild(a);
        }, 66);
        return true;
    } /* end if('download' in a) */


    //do iframe dataURL download (old ch+FF):
    var f = D.createElement("iframe");
    D.body.appendChild(f);
    f.src = "data:" +  strMimeType   + "," + encodeURIComponent(strData);

    setTimeout(function() {
        D.body.removeChild(f);
    }, 333);
    return true;
} /* end download() */

更新:添加了面向未来的 IE 例程

update2:在 GitHub 上查看包含 dataURL 和 Blob 支持的演进版本。

于 2013-05-04T18:52:43.857 回答