一个用于上传文件的接口
这个接口可以设置统一的返回格式, 使用到的npm插件有multer 和 express
const express = require("express");
const router = express.Router();
const multer = require("multer");
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, './uploads')
},
filename: function(req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
}
});
var upload = multer({
storage: storage,
fileFilter: function(req, file, cb){
let mimetype = file.mimetype;
let types = ["jpg","jpeg","png","gif"];
let tmpType = mimetype.split('/')[1];
if(types.indexOf(tmpType) == -1){
req.fileCheckError = {
err : -1,
msg : "数据类型错误"
}
cb(null, false)
} else {
cb(null, true)
}
},
limits:{
fileSize: 500000,
}
}).single('img');
router.post("/upload", function (req,res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
if (err.message == 'File too large') {
res.send({
err : -2,
msg : "图片尺寸大小应该小于500KB"
})
} else {
console.log(err, 'multer error')
res.send(err)
}
} else if (err) {
console.log('normal error', err)
res.send(err.Error)
} else if (req.fileCheckError) {
res.send(req.fileCheckError)
} else {
res.send({
err : 0,
msg : "上传成功"
})
}
})
})
module.exports= router;