当先锋百科网

首页 1 2 3 4 5 6 7

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);
})

 

转载于:https://www.cnblogs.com/xiaoliwang/p/10190780.html