我正在尝试通过 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;
}
}
我知道上面的代码至少部分有效,因为我在响应中返回了文件的内容。但是,我希望将其保存到文件系统中。
我是否误解了下载功能的用途?我是否只需要手动获取响应数据并将其写入文件系统?
最佳答案
res.download
添加 header ,建议浏览器应该下载文件而不是打开文件。然而,没有办法强制浏览器这样做;通常,最终由用户选择是否下载特定文件。
如果您使用 AJAX 触发此请求,那么这不会导致它被下载,因为您的 JavaScript 正在请求它获取数据。
Do I just need to take the response data and write it to the file system manually?
您没有浏览器端 JavaScript 中的文件系统访问权限。我不确定你打算如何做到这一点。
关于node.js - 表达 res.download() 并未实际下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27114494/