天天看点

express + multer 实现文件上传(二)-- 限制上传

注:最好看完了上一篇express + multer 实现文件上传(一)-- 基本上传后再看该内容

在这我们对上传做了一些限制:

const express = require('express');
const router = express.Router();
const multer = require('multer');
 
let upload = multer({
    limits:{
        //限制文件大小10kb
        fileSize: 10*1000,
        //限制文件数量
        files: 5
    },
    storage: multer.diskStorage({
        destination: function (req, file, cb) {
            // if (file) {
                cb(null, './uploads/');
            // }
        },
        filename: function (req, file, cb) {
            // if (file) {
                var changedName = (new Date().getTime())+'-'+file.originalname;
                cb(null, changedName);
            // }
        }
    }),
    fileFilter: function(req, file, cb){
        // 限制文件上传类型,仅可上传png格式图片
        if(file.mimetype == 'image/png'){
            cb(null, true)
        } else {
            cb(null, false)
        }
    }
});
 
let singleUpload = upload.single('singleFile');
//单个文件上传
router.post('/single',(req,res)=>{
    singleUpload(req,res,(err)=>{
        if(!!err){
            console.log(err.message)
            res.json({
                code: '2000',
                type:'single',
                originalname: '',
                msg: err.message
            })
            return;
        }
        if(!!req.file){
            res.json({
                code: '0000',
                type:'single',
                originalname: req.file.originalname,
                msg: ''
            })
        } else {
            res.json({
                code: '1000',
                type:'single',
                originalname: '',
                msg: ''
            })
        }
    });
});

let multerUpload = upload.array('multerFile');
//多个文件上传
router.post('/multer', (req,res)=>{
    multerUpload(req,res,(err)=>{
        if(!!err){
            res.json({
                code: '2000',
                type:'multer',
                fileList:[],
                msg: err.message
            });
        }
        let fileList = [];
        req.files.map((elem)=>{
            fileList.push({
                originalname: elem.originalname
            })
        });
        res.json({
            code: '0000',
            type:'multer',
            fileList:fileList,
            msg:''
        });
    });
});

 
module.exports = router;
           

这里面可以看到,对文件大小和类型做了相应限制,文件过大的话会进入err,文件类型不对的话不会进 err 

继续阅读