2011-12-08 31 views
0

我正在研究完全由node.js和coffeescript構建的項目。我想讓用戶通過點擊我網站上的按鈕,在我的Mongo DB中導出幾個不同集合的CSV。
我相信做到這一點的最好方法是對我的node.js後端進行ajax調用,並讓該調用將somefile.csv返回給用戶。儘管如此,我仍然不知所措,而且有太多相互衝突的資源。這裏是我認爲事情應該如何工作的存根:如何在Node.js中執行前端操作後將文件上傳到用戶

exports.exportToCSV = (req, res) -> 
    console.log 'Inside exportToCSV' 

    # Create a dynamic csv file 
    # How to? 
    # Set the response headers 
    # How to? 
    # Attach the newly created CSV 
    # How to? 
    # Write the response 
    res.write('somefile.csv') 
    res.end() 

任何幫助將不勝感激。謝謝。

回答

2

如果您在使用快車(和我說你需要一個相當大的理由不),創建CSV後一切都是小菜一碟:

res.download 'somefile.csv' 

由於Express docs explain,這是速記對於

res.attachment 'somefile.csv' 

(這將把頭)和

res.sendfile 'somefile.csv' 

如果你想以瞭解它是如何工作的,這裏的來源:https://github.com/visionmedia/express/blob/master/lib/response.js

至於創建一個CSV,我從來沒有這樣做,但你不能出錯爲「csv」searching npm

+0

這讓我把數據發送回前端,但它只發送文件的內容作爲響應的一部分。我真的希望有ajax調用打開一個成功的保存對話框。 –

+0

向DOM添加一個表單,並在服務器上的文件準備就緒後提交表單:http://particletree.com/notebook/ajax-file-download-or-not/ –

+0

您可能還想看看[ InstantIco](https://github.com/TrevorBurnham/instantico),這是我爲Node Knockout做的一個小項目,可以實現Ajax下載。 –

相關問題