天天看點

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 

繼續閱讀