注:最好看完了上一篇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