从javascript下载.csv文件时,Chrome不会保留扩展名

时间:2014-05-29 22:59:24

标签: javascript google-chrome export-to-csv

我们的应用程序从我们的显示表中获取数据,并以.csv格式为用户下载,而无需用户命名。这曾经有效,但在最近几天,Chrome必须改变他们的做法。我无法在网上找到有关更改或可能修复的任何内容。现在Chrome打开一个保存文件对话框,其默认文件名没有扩展名。关于如何让它至少允许javascript指定扩展名或完全避免保存文件对话框的任何想法?

Chrome版本:35.0.1916.114

我们的代码是:

factory.export = function (columns, people, wednesday, name) {

    var d = new Date(wednesday);
    var strDate = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();

    var exportName = strDate + ' ' + name;

    var dataToSend = [];

    // push the header
    var header = [];
    for (var k = 0; k < columns.length; k++) {
        header.push('\"' + columns[k] + '\"');
    }
    dataToSend.push(header);

    // push the body
    for (var i = 0; i < people.length; i++) {
        for (var j = people[i].length - 1; j >= 0; j--) {
            people[i][j] = '\"' + people[i][j] + '\"';
        }
        dataToSend.push(people[i]);
    }

    var csvContent = 'data:application/csv;charset=utf-8,\uFEFF'; // this last part is to make the characters get encoded correctly

    dataToSend.forEach(function (infoArray) {
        var dataString = infoArray.join(',');
        csvContent += dataString + '\n';
    });

    exportName += '.csv';
    var encodedUri = encodeURI(csvContent);
    var link = document.createElement('a');
    link.setAttribute('href', encodedUri);
    link.setAttribute('download', exportName);

    link.click(); // This will download the data file named "my_data.csv".
};

0 个答案:

没有答案