multer中间件上传文件

来源:互联网 发布:阿里云解析教程 编辑:程序博客网 时间:2024/04/20 23:53

multer是express官方推荐的文件上传中间件,调用方法如下

1、在NodeJs项目下的package.json中添加multer依赖,并运行npm install运行安装

"multer" : "0.1.6"

2、引入该模块

var multer = require('multer');

3、配置相关参数

var multer_head = multer({dest : '../public/images/', rename : function(fieldname, filename){return filename;}})

4、使用

router.post('/setting', multer_head, function(req, res){...})

代码如下

setting.ejs

<%- include header %><form method="post" enctype="multipart/form-data">上传头像:<input type="file" name="head" /><br><input type="submit" value="保存" /></form><%- include footer %>
router文件

var multer = require('multer');var multer_head = multer({dest : '../public/images/head/',//保存路径rename : function(fieldname, filename){//重命名var date = new Date();return fieldname + '_' + filename + '_' + date.getTime();}});//上传头像router.post('/setting', multer_head, function(req, res){req.flash('success', '头像上传成功');res.redirect('/');})
注意:

1、提交form表单文件时,注意enctype="multipart/form-data"参数

2、如果上传的图像没有找到,可能是由于路径问题

3、这种写法是基于0.1.6版本的multer,官方已经更新到1.1.0版本,很多教材还是使用旧版本的案例作为讲解,导致很杂乱,下面说一下新版本的写法


基于1.1.0版本的multer用法

1、更新一下package.json中的multer版本号,然后npm install重新安装一下

2、models文件夹中新建multerUtil.js文件,写入如下代码

var multer = require('multer');var storage = multer.diskStorage({//保存路径destination : function(req, file, cb){cb(null, '../public/images/head/');},//重命名filename : function(req, file, cb){var fileFormat = (file.originalname).split('.'),date = new Date();cb(null, file.fieldname + '_' + date.getTime() + '.' + fileFormat[fileFormat.length - 1]);}})var multer_head = multer({storage : storage})module.exports = multer_head;
3、router文件

var multer_head = require('../models/multerUtil.js');//参数名要和表单字段名一致var upload = multer_head.single('head');//上传头像router.post('/setting', upload, function(req, res){req.flash('success', '头像上传成功');res.redirect('/');})
注意:上传文件的保存路径并不会自动创建,需要手动创建好,如果没有该文件夹,会报错

文件上传有以下方法:

multer.single('file') //适用于单文件上传

multer.array('file', num) //适用于多文件上传,num为最多上传个数,上传文件的数量可以小于num

multer.fields(fields) //适用于混合上传,请参考官方API

参考链接:

http://cnodejs.org/topic/564f32631986c7df7e92b0db

https://github.com/expressjs/multer

0 0
原创粉丝点击