2012-11-15 96 views
3

我想將存在的數據導出到csv文件中。我嘗試使用此代碼:如何導出帶有文件名的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

據我所知,只能在chrome 14+中指定文件名。 看看這個問題:Is there any way to specify a suggested filename when using data: URI?

更新!

如果要一次下載多個csv文件,可以將它們壓縮在一起,或將每個文件分別保存在服務器上(每個文件現在都有一個指向它的網址 - 如果將它們放在「 www'文件夾)。 然後通過ajax將文件名及其路徑/ URL發送到客戶端(例如,使用json編碼列表)。 在ajax回調函數中:獲取文件列表並在單獨的彈出窗口中打開每個文件url。