2

我正在尝试在以 .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 文章。我仍然在问这个问题,因为这些问题已经过去了一段时间,所以我希望:

  1. 浏览器功能可能发生了有利的变化。
  2. 较旧的浏览器限制较少,因此某些解决方案现在可能比以前提出问题时更可行。

此外,如果它使问题更明显,我特意询问是否将一种内容标头插入数据 URI(根据主题),这是对其他问题的一个转折。

提前致谢。

4

0 回答 0