这个问题非常类似于如何禁用ExpressBodyParser进行文件上传(Node.js)。他们提供的答案是针对Express3的,我用更新后的Express4尝试了这个解决方案,但它似乎不起作用。
我正在使用Node.jsExpress构建一个Web应用程序。我正在使用另一个库,BodyParser,来解析后参数。然而,我希望对多部分表单数据POSTS有更细粒度的访问——我需要将输入流管道到另一台服务器,并且希望避免首先下载整个文件。
所有文件上传都会自动解析,并在它们到达我的任何功能之前使用“request.files”上传和可用。
有没有一种方法可以让我在不禁用BodyParser的情况下禁用多部分formdata帖子的BodyParser?
这是我的应用程序。js文件。在这里,我定义了一个身份验证路由,它不应该除了任何文件,而只是一个令牌(POST参数)。我还定义了另一个称为上传的路由。此路由接受文件和POST参数(表单数据)。只有在身份验证路由允许的情况下,才会调用此路由。因此,在authentication路由中,我不希望表单数据被允许,但在上传路由中,我希望。因此,当我收到上传请求时,它将通过auth路径,然后是上传路径。因此,我需要允许auth路由允许我不想要的文件(表单数据)。因此,我希望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
});
与其禁用,为什么不在需要的路由/路由器上启用中间件呢?
对于单个路由,您可以将其作为实际路由处理程序之前的另一个参数添加,例如:
app.post('/upload', bodyParser, (req, res) => {
// route logic here
});
将主体解析中间件包装在一个函数中,该函数检查请求主体的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);
});
问题内容: 看来这应该是一个相当简单的问题,但是我很难确定如何解决它。 我正在使用Node.js + Express构建一个Web应用程序,并且发现表达暴露的connect BodyParser在大多数情况下非常有用。但是,我想对多部分表单数据POSTS进行更细粒度的访问- 我需要将输入流通过管道传输到另一台服务器,并且希望避免先下载整个文件。 但是,由于我使用的是Express BodyPars
我们可以禁用或覆盖身体解析器后,注入它作为中间件来表达应用程序? 在一个文件(不可编辑,由框架完成)应用程序中。使用(bodyParser.json());出口应用程序; 在另一个文件中,我正在导入应用程序,这里我想为其中一个路由禁用bodyParser。我有办法做到吗?
这似乎应该是一个相当简单的问题,但我真的很难想出如何解决它。 我正在使用Node.jsExpress构建一个Web应用程序,我发现在大多数情况下,Express公开的连接BodyParser非常有用。然而,我希望对多部分表单数据POSTS有更细粒度的访问——我需要将输入流管道到另一台服务器,并且希望避免首先下载整个文件。 然而,因为我正在使用快速身体解析器,所以所有文件上传都会自动解析,并在它们到
问题内容: 关于此问题还有其他一些问题: boto.exception.S3ResponseError:S3ResponseError:403禁止 S3ResponseError:S3ResponseError:403禁止 S3ResponseError:403禁止使用Boto Python:Amazon S3无法达到目标:说“ 403 Forbidden” 但是,似乎我可能遇到了其他问题(例如,
我正在IIS服务器上使用网站面板。我想使用ftp上载文件 我使用了以下代码: 这段代码运行没有错误。当我使用网站面板的文件管理器时,一个文件创建了“Name.ext”,但这个文件大小是0 KB。为什么?我有什么问题?! 我确信windows防火墙允许我这么做。 更新:我正在使用UploadFileTask和UploadFile(unasync)进行操作,但结果与async相同:(
类型DiskFileUpload中的方法ParserRequest(HttpServletRequest,int,long,String)不适用于参数(HttpServletRequest) 当我以服务器的身份运行时...它会在控制台出现错误 这是我在此代码中的代码出错,因为类型DiskFileUpload中的方法parseRequest(HttpServletRequest,int,long,S