body-parser和multer
2015-12-16 00:00
225 查看
新版的nodejs中的body-parser和multer中间件进行了改写,而很多教程都是旧的同时这几天看到一个篇文章,大概意思是说,关于node的一本教程,刚上市就过时了.是的,这就是js,各种新技术,各种新的插件的更新速度简直了!!!!
我来整理一下关于这两个插件的最新版的用法,因为没有找到详细的教程,只能到npmjs上面查看文档了.可能很多新同学看到满篇的英文就觉得头大.但是只要你下决心去看的话,就会发现,其实和看中文的教程是没什么差别的.
先看multer,它的第一句介绍是:一个关于multipart/form-data上传的中间件(其中multipart/form-data是浏览器通过表单上传文件的一种方式,比如:邮件附件,关于它的有关知识可以百度,此处不作过多解释.),主要用来上传文件
几个使用的实例
如果你想对你upload的文件进行更多的操作,可以使用storage而不是dest.Multer提供了两个storage引擎
1. DiskStorage
destination:文件上传的目的路径,虽然不配置这个参数,文件将会自动上传到操作系统默认的tem/uploads文件夹中.但是为了避免不必要的麻烦,一定要写上自己知道的路径
filename:文件上传后在服务器端的名字,建议改名,这个改名操作是在filename后面的function里面处理的,他那样可以避免一定的主动攻击
2. MemoryStorage
顾名思义,这个会把文件保存在内存里,当作Buffer对象,他没有任何的可选参数
,则返回一个k-v键值对,如果是false,则返回一个字符串或者数组.如果extended为true,则返回任意type
参考来自
https://www.npmjs.com/package/multer
我来整理一下关于这两个插件的最新版的用法,因为没有找到详细的教程,只能到npmjs上面查看文档了.可能很多新同学看到满篇的英文就觉得头大.但是只要你下决心去看的话,就会发现,其实和看中文的教程是没什么差别的.
先看multer,它的第一句介绍是:一个关于multipart/form-data上传的中间件(其中multipart/form-data是浏览器通过表单上传文件的一种方式,比如:邮件附件,关于它的有关知识可以百度,此处不作过多解释.),主要用来上传文件
安装
npm install --save multer
使用
Multer会把body,或者file/files对象,添加到request对象中.body对象包含有表单中提交的文本数据,file/files对象包含有你通过表单上传的文件.几个使用的实例
var express = require('express')var multer = require('multer')var upload = multer({dest:'upload/'})/*几乎在所有的web app中,dest属性都是必须的,一般它的使用形式如上. */var app = express() app.post('/profile', upload.single('avatar'), function (req, res, next) { // req.file is the `avatar` file // .single只能接收一个文件,文件将会被保存在req.file中,下同}) app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { // req.files is array of `photos` files // .array可以接受一组文件,如果文件数超过12个就会报错 }) var cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) app.post('/cool-profile', cpUpload, function (req, res, next) { // req.files is an object (String -> Array) where fieldname is the key, and the value is array of files // // e.g. // req.files['avatar'][0] -> File // req.files['gallery'] -> Array // // req.body will contain the text fields, if there were any })
如果你想对你upload的文件进行更多的操作,可以使用storage而不是dest.Multer提供了两个storage引擎
1. DiskStorage
var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, '/tmp/my-uploads') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }) var upload = multer({ storage: storage })
destination:文件上传的目的路径,虽然不配置这个参数,文件将会自动上传到操作系统默认的tem/uploads文件夹中.但是为了避免不必要的麻烦,一定要写上自己知道的路径
filename:文件上传后在服务器端的名字,建议改名,这个改名操作是在filename后面的function里面处理的,他那样可以避免一定的主动攻击
2. MemoryStorage
顾名思义,这个会把文件保存在内存里,当作Buffer对象,他没有任何的可选参数
var storage = multer.memoryStorage() var upload = multer({ storage: storage })
body-parser
urlencoded({extended:true});返回一个解析过的url,被解析的url必须是utf-8格式.,则返回一个k-v键值对,如果是false,则返回一个字符串或者数组.如果extended为true,则返回任意type
参考来自
https://www.npmjs.com/package/multer
相关文章推荐
- 【Python 第9课】random
- 【Python 第10课】 变量2
- 【Python 第11课】 逻辑判断
- Windows 音频知识学习汇总
- 学习逆向工程知识的一些随笔(一)
- OO设计中避免违法依赖倒置原则
- spring mvc controller间跳转 重定向 传参
- 关于应用full gc频繁的分析及解决
- jstat的用法【待删】
- Spring+Mybatis+Velocity
- Maven零散笔记——常用配置
- django 连接mysql
- c语言指针闲谈
- IOS 百度地图定位使用(不显示用户当前坐标)
- IOS 关键字self,super,copy, retain, assign , readonly
- TCP标志位解释
- Unix常用命令
- 数据库技术的产生与发展
- ebay
- python分析nginx日志的ip(中篇二)