javascript - 如何为文件上传禁用 Express BodyParser (Node.js)

标签 javascript node.js file-upload express connect

这似乎应该是一个相当简单的问题,但我很难弄清楚如何解决它。

我正在使用 Node.js + Express 构建一个 Web 应用程序,我发现 express 暴露的 connect BodyParser 在大多数情况下非常有用。但是,我希望在多部分表单数据 POST 出现时对其进行更精细的访问 - 我需要将输入流通过管道传输到另一台服务器,并且希望避免先下载整个文件。

因为我使用的是 Express BodyParser,但是,所有上传的文件都会自动解析,并在它们到达我的任何函数之前使用“request.files”上传和可用。

有没有办法让我为多部分表单数据帖子禁用 BodyParser,而不为其他所有内容禁用它?

最佳答案

如果您需要使用express.bodyParser提供的功能但是您想为 multipart/form-data 禁用它,诀窍是不要使用 express.bodyParser directly . express.bodyParser是一种包装其他三种方法的便捷方法:express.json , express.urlencoded , 和 express.multipart .

所以不要说

app.use(express.bodyParser())

你只需要说

app.use(express.json())
   .use(express.urlencoded())

这为您提供了 bodyparser 对大多数数据的所有好处,同时允许您独立处理表单数据上传。

编辑: jsonurlencoded现在不再与 Express 捆绑在一起。它们由单独的 body-parser 提供模块,您现在可以按如下方式使用它们:

bodyParser = require("body-parser")
app.use(bodyParser.json())
   .use(bodyParser.urlencoded())

关于javascript - 如何为文件上传禁用 Express BodyParser (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295554/

相关文章:

javascript - Ribbon Workbench 添加 PrimaryControl 参数会破坏表单

node.js - Sails.js Waterlock/auth/register 导致错误 500

Javascript 对象原型(prototype)引用

javascript - 当您不知道 key 时访问对象内部的某些内容

javascript - 如何在 jquery 代码中使用它

javascript - 有什么理由不使用异步脚本元素吗?

javascript - ESlint - import.meta 导致致命解析错误

php - 将图像上传到 S3 时遇到内部服务器错误 500

jQuery-文件-上传完成回调

javascript - 将变量从 php 发送到 jquery - 文件上传脚本