3

我想将现有数据导出到 csv 文件中。我尝试使用此代码:

var uriContent = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
var myWindow = window.open(uriContent);
myWindow.focus();

它可以工作,但我可以设计文件名。我只能得到名称为“MVeAnkW8.csv.part”的对话框,我不知道该名称来自何处。

如何在第一个对话框中分配文件名?提前致谢。

更新:

我现在正在使用导轨。实际上,我在服务器端名称 export_to_csv 中有一个方法。在这个方法的最后,我使用这样的代码:

  send_data(csv_string,
  :type => 'text/csv; charset=utf-8;',
  :filename => "myfile.csv")

它可以工作,我可以指定文件名。现在,我想使用ajax来获取更多的csv文件(这就是我想使用javascript的原因,因为普通的http请求只能下载一个文件)。

我使用这样的js代码:

$.post("export_to_csv",
 function(data) {
 var uriContent = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
     var myWindow = window.open(uriContent);
     myWindow.focus();});     

它从服务器端获取数据,我尝试将其传输到 csv 中。我可以得到一个文件,但不能指定文件名。

4

1 回答 1

4

据我所知,您只能在 chrome 14+ 中指定文件名。看看这个问题:Is there any way to specify aSuggested filename when using data: URI?

更新!

如果您想“一次”下载多个 csv 文件,您可以将它们压缩在一起,或者将每个文件分别保存在服务器上(每个文件现在都有一个指向它的 url - 如果您将它们放在“www”文件夹中) . 然后通过 ajax 将文件名及其路径/url 发送到客户端(例如使用 json 编码列表)。在 ajax 回调函数中:获取文件列表并在单独的弹出窗口中打开每个文件 URL。

于 2012-11-15T20:55:14.823 回答