【发布时间】:2014-11-24 21:28:02
【问题描述】:
我正在尝试通过 Express 的 res.download 函数将生成的文件返回到前端。我正在使用 chrome,但每当我调用执行以下代码的 API 时,所有返回的都是从 Express res.sendFile() 函数返回的相同值。
我知道 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 我不知道为什么会这样。你能解释一下吗?
-
当您单击链接时,Chrome 会发送请求,Chrome 的默认行为是下载文件,除非它可以呈现。当您从 JS 发出请求时,您的 JS 代码就是获得响应的东西,并且可以随意使用它做任何事情,因此 Chrome 的默认行为不参与其中。