我試圖通過Express'res.download函數將生成的文件返回到前端。我正在使用chrome,但每當我調用執行以下代碼的API時,所有返回的值都與Express res.sendFile()函數返回的值相同。Express res.download()沒有實際下載文件
我知道res.download使用res.sendFile,但我希望下載功能實際上保存到文件系統,而不僅僅是返回響應正文中的文件。
這是我的代碼。
exports.download = function(req,res) {
var filePath = //somefile that I want to download
res.download(filePath, 'response.txt', function(err) {
throw err;
}
}
我知道上面的代碼至少部分起作用,因爲我回來了,在響應中,文件的內容。但是,我希望將它保存到文件系統中。
我誤解了下載功能應該做什麼?我只需要將響應數據手動寫入文件系統?
你是如何提出點擊調用這個端點的請求的?如果請求是通過Chrome試圖打開新頁面,則下載的唯一方法是。通過XMLHttpRequest或類似的方式向這個端點發送請求是行不通的。 – loganfsmyth 2014-11-24 23:42:00
@loganfsmyth我找不到這是爲什麼。你可以解釋嗎? – Ketcomp 2015-11-24 19:28:33
當您點擊一個鏈接時,它是發送請求的Chrome,Chrome的默認行爲是下載一個文件,除非它是可以呈現的文件。當你從JS發出請求時,你的JS代碼就會得到響應,並且可以隨意做任何事情,所以Chrome的默認行爲不會參與其中。 – loganfsmyth 2015-11-24 22:55:36