body-parser与querystring与multer的区别
body-parser express中间件
body-parser是用来解析http请求体的,是express默认使用的中间件之一。
(只解析post的普通数据请求,无法解析post文件请求)
使用方法:
const bodyParser=require('body-parser');
app.use=(bodyParser.json);//解析为json格式
app.use=(bodyParser.urlencoded({extended:false}));
//解析表单类提交的数据,也就是请求体中Content-Type: application/x-www-form-urlencoded的数据
//返回的对象是一个键值对,当extended为false,键的值为'String'或'Array',为true则可为任何数据类型。
Content-Type的四种类型:
application/x-www-form-urlencoded 常见的form提交
multipart/form-data 文件提交
application/json 提交json格式的数据
text/xml 提交xml格式的数据
querystring node内建对象
querystring是node的内建对象之一,用来将字符串解析为对象,不支持多级嵌套字符串的解析。
使用方法:
querystring.parse("info[name]=henry&info[age]=30&hobby[1]=sport&hobby[2]=coding")
解析结果:{
'info[name]': 'henry',
'info[age]': '30',
'hobby[1]': 'sport',
'hobby[2]': 'coding'
}
qs 第三方插件
是querystring的一个库,支持多级字符串嵌套解析。(最多只解析5层嵌套)
使用方法:
qs.parse("info[name]=henry&info[age]=30&hobby[1]=sport&hobby[2]=coding")
解析结果:{ info: {
name: 'henry',
age: '30'
},
hobby: [ 'sport', 'coding' ]
}
multer express的上传文件中间件
body-parser只支持post请求的普通数据解析,multer支持对post请求的文件解析。
使用方法:
1.必须指定表单form类型enctype="multipart/form-data" method="post"
2.const multerObj=multer({dest: './static/upload'});//上传文件路径
3.app.use(multerObj.any();)//上传文件类型任意
4.若是静态文件,需要通过express.static()方法设置
app.use('/upload',express.static(path.join(__dirname,'upload')))
//前面的uploads是一个挂载路径,后面是当前项目的完整绝对路径
body-parser与querystring与multer的区别的更多相关文章
- Request.QueryString与Request的区别
Request.Form可以获取表单中提交的内容,对于单选则会自定进行判断获取选中的值. Request.QueryString["id"] 只能读取通过地址栏参数传递过来的名为i ...
- lucene.net 使用过程中的 几个注意事项(含termquery 和QueryParser 的区别)
几个注意事项1.建立索引时 插入的顺序(不设置document和字段的boost) 会影响到 查询结果的默认排序,建议:将最新生成的文章 最后建索引 这样 查询结果首先显示的是 最后插入的数据2.Bo ...
- Lucene教程具体解释
(建立索引)] )中生成的索引文件的存放地址.详细步骤简单介绍例如以下: 1.创建Directory对象,索引目录 2.创建IndexSearch对象,建立查询(參数是Directory对象) 3.创 ...
- Lucene.Net 2.3.1开发介绍 —— 四、搜索(一)
原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(一) 既然是内容筛选,或者说是搜索引擎,有索引,必然要有搜索.搜索虽然与索引有关,那也只是与索引后的文件有关,和索引的程序是无关的,因此 ...
- Lucene的分析过程
转自:http://www.open-open.com/lib/view/open1348033848724.html Lucene的分析过程 回顾倒排索引的构建 收集待建索引的原文档(Documen ...
- .net学习笔记----HttpRequest类
一.HttpRequest的作用 HttpRequest的作用是令到Asp.net能够读取客户端发送HTTP值.比如表单.URL.Cookie传递过来的参数. 返回字符串的那些值就不说了,那些基本上都 ...
- Lucene查询索引(分页)
分页查询只需传入每页显示记录数和当前页就可以实现分页查询功能 Lucene分页查询是对搜索返回的结果进行分页,而不是对搜索结果的总数量进行分页,因此我们搜索的时候都是返回前n条记录 package c ...
- 第六步:Lucene查询索引(优化一)
package cn.harmel.lucene; import java.io.IOException; import java.nio.file.Paths; import org.apache. ...
- 第六步:Lucene查询索引
package cn.harmel.lucene; import java.io.IOException; import java.nio.file.Paths; import org.apache. ...
随机推荐
- winform 旋转图片
//img.RotateFlip(RotateFlipType.Rotate90FlipNone); //顺时针旋转90度 RotateFlipType.Rotate90FlipNone //逆时针旋 ...
- [Baltic2009]beetle【区间Dp】
Online Judge:Bzoj1761 Label:区间Dp 题目描述 在一条直线上有N个点,每个点M升水. 一个虫子在坐标轴0点上,它每个单位时间移动一格,每个点的水每单位时间消失1升. 问虫子 ...
- 廖雪峰Java11多线程编程-3高级concurrent包-6ExecutorService
Java语言内置多线程支持: 创建线程需要操作系统资源(线程资源,栈空间) 频繁创建和销毁线程需要消耗大量时间 如果可以复用一个线程 线程池: 线程池维护若干个线程,处于等待状态 如果有新任务,就分配 ...
- 2-sat——poj3678经典建图
比较经典的建图,详见进阶指南 2-sat一般要用到tarjan来求强连通分量 /*2-sat要加的是具有强制关系的边*/ #include<iostream> #include<cs ...
- c++ static关键字的作用
1.被申明的函数或值无法被其他源文件使用 2.static的第二个作用是保持变量内容的持久.(static变量中的记忆功能和全局生存期) 存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯 ...
- 爬虫——python——百度地图经纬度查询——经纬度查看地点地名——利用百度API获取地名经纬度——爬取所有的中国地址
import requests address = '40.8587960,86.866991' url = 'http://api.map.baidu.com/geocoder?output=jso ...
- Workman-Thrift疑问解析
Workman是纯纯的PHP实现的一套网络通信框架,Workman-Thrift则是以Workman为基础,为Thrift RPC实现网络通信.经过学习与测试,现把自己的疑问与验证记录下来: 问题一: ...
- LinkedList集合 实现栈和队列
LinkedList集合的底层是链表结构实现的,所以可以模拟栈(先进后出)和队列(先进先出). 方法: addFirst() //添加元素到列表的起始位置 addLast() //添加元素到列表的结束 ...
- <随便写>WIN10家庭版调出策略组
1.管理员运行cmd文件 2.运行窗口输入gpedit.msc 运行结果:
- mac使用ssh出现permission denied(publickey)
看出错信息是权限太开放的问题,google了一下,修改权限,不只是需要修改 .pem 文件的权限,还需要修改.ssh目录和用户目录 chmod go-w ~/ chmod ~/.ssh chmod ~ ...