node.js - 表达 res.download() 并未实际下载文件

标签 node.js express

我正在尝试通过 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/

相关文章:

javascript - 从 Express.js 路由堆栈中删除路由器

javascript - express.io Undefined 不是一个函数

node.js - 在 Express/ejs 中添加 View

javascript - 使用jquery在nodeJs中隐藏元素

javascript - express ,使用不同进口的相同路线?

javascript - 在 Kubuntu 18.04 上运行在 Nodejs 中设置环境变量的 NPM 模块时权限被拒绝

node.js - 如何通过node js运行cassandra的复杂sql

node.js - Rally:Node.js 中的 v2.0 API 授权来处理 POST 请求

ruby - 使用 Watchr 自动连接文件

node.js - 是否有适用于 node.js 的 AWS AMI?