express文件上传中间件Multer最新使用说明

时间:2020-12-09 03:56:30

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

说明

multer是express官方推荐的文件上传中间件,它是在busboy的基础上开发的。目前multer的最新版本为:~1.1.0。本文所有代码段均使用此版本。multer的官方地址:GitHub

配置

在nodejs下的package.json中添加multer依赖,运行加载依赖库。新建multerUtil.js,

 var multer=require('multer');
var storage = multer.diskStorage({
//设置上传后文件路径,uploads文件夹会自动创建。
destination
: function (req, file, cb) {
cb
(null, './public/uploads')
},
//给上传文件重命名,获取添加后缀名
filename
: function (req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb
(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
}
});
//添加配置文件到muler对象。
var upload = multer({
storage
: storage
});

//如需其他设置,请参考multer的limits,使用方法如下。
//var upload = multer({
// storage: storage,
// limits:{}
// });

//导出对象
module.exports = upload;

使用

testController.js

var muilter = require('./multerUtil');
//multer有single()中的名称必须是表单上传字段的name名称。
var upload=muilter.single('file');
exports
.dataInput = function (req, res) {
upload
(req, res, function (err) {
//添加错误处理
if (err) {
return console.log(err);
}
//文件信息在req.file或者req.files中显示。
console
.log(req);
});
}

app.js

 var testController=require('./testController');
app
.post('/dataInpute',testController.dataInput);

其他说明

1.文件上传有以下方法

  • muilter.single(‘file’), //适用于单文件上传
  • muilter.array(‘file’,num), //适用于多文件上传,num为最多上传个数,上传文件的数量可以小于num,
  • muilter.fields(fields), //适用于混合上传,比如A类文件1个,B类文件2个。官方API有详细说明。

2.file为上传字段名称,当使用form表单submit方式上传时,必须与表单上传的name属性保持一致。表单记得加上 enctype=‘multipart/form-data’

3.对上传文件大小限制,名称限制等均可在limits中加上,具体可加属性,请参考官方api。

在网上搜索的其他资料大部分都版本较老,所以重新整理一下,希望对大家能有所帮助,如本人理解不正确或使用方法不当,还请多多指教。