这几天因为要用到file文件上传,所以一直在学习multer中间件
1.multer的引入
var multer=require('multer')
2.multer对象创建
var multerObject=multer({dest:"储存路径"});
2.1.multer对象可以引入的四种选项
2.1.1.dest和storage
如果不设置储存的路径,储存将存入内存中,并且永远不会写入磁盘
dest
var multerObject=multer({dest:"储存路径"});
storage
var storage=multer.diskstorage({
destination:function(req,file,cb){
cb(null,"路径")
},
filename:function(req,file,cb){
cb(null,"file.fieldname + '-' + Date.now()")
}
})
var multerObject=multer({storage:storage})
destination设置存储的路径,如果不设置将使用默认的路径。
filename设置存储的文件名,如果不设置将使用系统随机的文件名并且是没有扩展名的。
使用时是没有buffer信息的
var storage=multer.memoryStorage()
var multerObject=multer({storage:storage});
使用内存储存引擎,文件信息将包含一个buffer字段
输出的内容和没有写入是一样的。
multer({storage:storage})==multer()
2.1.2.limits
limits:一个对象,对数据进行限制,详细信息可以在busboy里边找到
这里先不做探究
2.1.3.fileFilter控制一个文件什么时候上传,什么时候跳过
function fileFilter(req,file,cb){
cb(null,false);
cb(null,true);
cb(new Error("一些错误"))
}
fileFilter中可以根据条件使用cb(null,false), cb(null,true),cb(new Error())其中cb(null,false)表示不接收,cb(null,true)表示接受,cb(new Error())显示报错的内容;