Multer 是一個 node.js 中間件,用於處理 multipart/form-data
類型的表單數據,它主要用於上傳文件node
注意: Multer 不會處理任何非 multipart/form-data
類型的表單數據express
使用方法:npm
安裝 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); })