- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题与 How to disable Express BodyParser for file uploads (Node.js) 非常相似。他们提供的答案是针对 Express3 的,我已经尝试过使用更新的 Express 4 的解决方案,但似乎不起作用。
我正在使用 Node.js + Express 构建 Web 应用程序。我正在使用另一个库 BodyParser 来解析 post 参数。但是,我希望能够更精细地访问多部分表单数据帖子 - 我需要将输入流通过管道传输到另一台服务器,并且希望避免首先下载整个文件。
所有文件上传都会在到达我的任何函数之前使用“request.files”自动解析并上传和可用。
有没有办法让我禁用多部分表单数据帖子的 BodyParser,而不禁用其他所有内容?
这是我的 app.js 文件。在这里,我定义了一个身份验证路由,该路由不应排除任何文件,而只是一个 token (POST 参数)。我还定义了另一条称为上传的路线。该路由接受文件和 POST 参数(表单数据)。仅当身份验证路由允许时才会调用此路由。因此,在身份验证路由中,我不希望允许表单数据,但在上传路由中我希望允许。因此,当我收到上传某些内容的请求时,它将先经过身份验证路由,然后再经过上传路由。因此,我需要允许身份验证路由允许我不想要的文件(表单数据)。所以我希望 bodyparser 在 auth 路由中工作,同时我在上传路径中使用 mutler (另一个库)来解析我的上传文件。当然,在我的实际应用程序中,我有更多的路线,并且希望以最少的冗余尽可能干净地编码。
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: true
}));
var route_auth = require('./routes/auth');
app.use('/api/post/*', route_auth);
var route_upload = require('./routes/post/upload');
app.use('/api/post/upload', route_upload );
app.listen(3000, function() {
console.log('Server listening on port 3000!')
});
我的身份验证路线如下所示:
router.post("/", function(req, res, next) {
if(everythingiscool){
return next()
}
next(err);
});
我的上传路线如下:
var express = require('express');
var router = express.Router();
var multer = require('multer')
var upload = multer({ dest: 'uploads/' });
router.post("/", upload.single('avatar'), function(req, res, next) {
//work with req.file
});
最佳答案
将 bodyParse 中间件包装在一个函数中,该函数检查请求正文的 Content-Type 是否为多部分:
var isMultipart = /^multipart\//i;
var bodyParser = require('body-parser');
var urlencodedMiddleware = bodyParser.urlencoded({ extended: true });
app.use(function (req, res, next) {
var type = req.get('Content-Type');
if (isMultipart.test(type)) return next();
return urlencodedMiddleware(req, res, next);
});
关于javascript - 禁用文件上传的 bodyparser - Nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917469/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!