我试图通过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