Multer 是一个 node.js 中间件,用于处理 multipart/form-data
类型的表单数据,它主要用于上传文件
注意: Multer 不会处理任何非 multipart/form-data
类型的表单数据
使用方法:
安装 Multer
npm install multer --save
安装 uuid (生成唯一标识,作为文件名)
npm install uuid --save
保存图片
var express = require('express') var path = require('path') var router = express.Router() var multer = require('multer') //uuid工具可以生成唯一标示 需要安装 var UUID = require('uuid') //设置保存规则 var storage = multer.diskStorage({ //destination:字段设置上传路径,可以为函数 destination: path.resolve(__dirname, '../upload'), //filename:设置文件保存的文件名 filename: function(req, file, cb) { let extName = file.originalname.slice(file.originalname.lastIndexOf('.')) let fileName = UUID.v1() cb(null, fileName + extName) } }) //设置过滤规则(可选) var imageFilter = function(req, file, cb){ var acceptableMime = ['image/jpeg', 'image/png', 'image/jpg', 'image/gif'] //微信公众号只接收上述四种类型的图片 if(acceptableMime.indexOf(file.mimetype) !== -1){ cb(null, true) }else{ cb(null, false) } } //设置限制(可选) var imageLimit = { fieldSize: '2MB' } //创建 multer 实例 var imageUploader = multer({ storage: storage, fileFilter: imageFilter, limits: imageLimit }).array('photos', 12) //定义表单字段、数量限制 router.post('/image', imageUploader, function(req, res, next) { //req.files中保存文件信息,如下 // [ { fieldname: 'photos', // originalname: 'p8U85lWN0XyYcel_avatar_uploaded1439700817.69.jpg', // encoding: '7bit', // mimetype: 'image/jpeg', // destination: 'E:\\mine\\wechat\\upload', // filename: 'b585c040-0a6f-11e9-bbb6-fdcabd365420.jpg', // path: // 'E:\\mine\\wechat\\upload\\b585c040-0a6f-11e9-bbb6-fdcabd365420.jpg', // size: 16536 } ] console.log(req.files); })