我正在尝试在以 .csv 扩展名下载的 JavaScript 中动态创建数据,但无法将文件名与下载相关联。这是一个代码片段:
var data = '1,2,3';
window.location =
"data:application/csv;charset=UTF-8;content-disposition:attachment;filename=export.csv,"
+ encodeURIComponent(data);
这会下载,但文件名是通用的,没有 .csv 扩展名。
我可以使用以下 PHP 代码在服务器端执行此操作:
<?php
header('Content-type: text/csv');
header('Content-disposition: attachment;filename=export.csv');
echo "1,2,3";
?>
此外,如果我背对墙,我可以修改我的 Javascript 以将 Ajax 发送到服务器并得到它作为回报,但我更喜欢纯 Javascript 解决方案。是否有独立于浏览器、无 Flash 的方式来执行此操作?
编辑
有人指出这个问题可能是重复的。我做了很好的努力并检查了以前的 SO 文章。我仍然在问这个问题,因为这些问题已经过去了一段时间,所以我希望:
- 浏览器功能可能发生了有利的变化。
- 较旧的浏览器限制较少,因此某些解决方案现在可能比以前提出问题时更可行。
此外,如果它使问题更明显,我特意询问是否将一种内容标头插入数据 URI(根据主题),这是对其他问题的一个转折。
提前致谢。