首页 > 代码库 > 关于connect框架的bodyParse()的问题
关于connect框架的bodyParse()的问题
这两天自己搭建一个上传以及下载图片的网站,在搭建的过程中发现一个connect框架的版本问题。
老版本的connect提供bodyParse(),这个中间件为后续中间件提供req.body和req.files两个对象。那什么是req.body和req.files,这两个对象都是form表单提交时产生的对象,form表单有三种提交格式:即enctye可以有三种值:
enctype = "application/x-www-form-urlencoded"enctype = "multipart/form-data"enctype = "text/plain"
分别对应不同的提交数据,其中multipart是提交文件数据。
新版本对老的bodyParser(),进行了分离,需要从npm上自行安装bodyParser,不像老版本可以直接使用bodyParser();
var connect = require(‘connect‘);var bodyParser = require(‘body-parser‘);var app = connect();app.use(bodyParser.urlencoded({ extended: false }));app.use(function(req, res){ console.log(req.body.username); res.end();})//老版本app.use(connect.bodyParser());
但是需要注意的是,不是类型的form提交都能够被body-parser这个中间件解析出来的。下面是body-parser,github中的一段介绍:
Node.js body parsing middleware.This does not handle multipart bodies, due to their complex and typically large nature. For multipart bodies, you may be interested in the following modules:busboy and connect-busboymultiparty and connect-multipartyformidablemulterOther body parsers you might be interested in:bodyco-body
所以,如果需要解析multipart/form-data格式的数据时,需要用到multiparty或者connect-multiparty,考虑到在express中使用中间件的方便性,我选用的是connect-multiparty中间件:
var connect = require(‘connect‘);var multiparty = require(‘connect-multiparty‘);var app = connect() .use(multiparty()) .use(function(req, res){ console.log(‘ok, in!‘); console.log(req.body); console.log(req.files); }) .listen(3000);
使用chrom app的postman对程序进行测试:
查看terminal中的记录:
{ name: ‘lzm‘ }{ photo: { fieldName: ‘photo‘, originalFilename: ‘logo.png‘, path: ‘/var/folders/xk/_c57gj3j7s1d69th1mf65rkw0000gp/T/9335-1cemj7f.png‘, headers: { ‘content-disposition‘: ‘form-data; name="photo"; filename="logo.png"‘, ‘content-type‘: ‘image/png‘ }, ws: { path: ‘/var/folders/xk/_c57gj3j7s1d69th1mf65rkw0000gp/T/9335-1cemj7f.png‘,
...
}, size: 3452, name: ‘logo.png‘, type: ‘image/png‘ } }
这样就解决的,parser解析不了form-data的问题。
关于connect框架的bodyParse()的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。