我在下方有代码生成下载链接,以便用户可以在我的网站上下载.csv文件。
var link = document.createElement("a");
link.id = "csvDwnLink";
window.URL = window.URL || window.webkitURL;
var csv = "\ufeff" + CSV,
blob = new window.Blob([csv], {type: 'text/csv, charset=UTF-8'}),
csvUrl = window.URL.createObjectURL(blob),
filename = 'export.csv';
$("#csvDwnLink").attr({'download': filename, 'href': csvUrl});
$('#csvDwnLink')[0].click();
document.body.removeChild(link);
我希望用户可以点击csvUrl
的下载链接下载cvs文件
它适用于铬。但是,当我使用Safari单击相同的链接时,它将直接显示选项卡中csv文件的内容。
如何解决此问题,以便safari显示保存文件窗口,用户可以选择保存文件的路径,而不是在单击下载链接时直接显示cvs文件的内容?登记/> 希望有人能给我一些建议或替代方法 提前谢谢!
==已更新==
在这里找出解决方案
solution 1,
solution 2
代码将是:
var link = document.createElement("a");
link.id = "csvDwnLink";
document.body.appendChild(link);
window.URL = window.URL || window.webkitURL;
var csv = "\ufeff" + CSV,
csvData = 'data:attachment/csv;charset=utf-8,' + encodeURIComponent(csv),
filename = 'filename.csv';
$("#csvDwnLink").attr({'download': filename, 'href': csvData});
$('#csvDwnLink')[0].click();
document.body.removeChild(link);
Safari将为用户下载该文件,但文件名将为unknown
,可能是因为Safari不支持'{1}}提及的“下载”属性。
答案 0 :(得分:9)
我做了一个快速研究 - 我看起来Safari不支持你想要实现的目标。
您的解决方案在Chrome(和Firefox)中运行的原因是他们support the download attribute - Safari还没有。
答案 1 :(得分:0)
Safari 10.1+支持"下载"属性。它现在应该工作。
https://github.com/eligrey/FileSaver.js/issues/129#issuecomment-275221240