cnpm install express --save 下载express依赖 很重要
cnpm install body-parser --save post请求才设置不然接收的req.body为null
router是进行一个路由的模块化 方便以后管理
const express = require('express')
const bodyParser = require('body-parser')
const path = require('path')
const app = express()
app.use('/public',express.static(path.join(__dirname,'./static'))) //静态文件public 替换 当前路径/static
app.use(bodyParser.urlencoded({extended:false}));// 设置bodyParser//post请求请求才设置
app.use(bodyParser.json());
app.use(function(req,res,next){
res.header("Access-Control-Allow-Origin","*");
next();
})
const adminRouter = require('./router/admin')
const fileRouter = require('./router/file')
app.use("/admin",adminRouter);
app.use('/file',fileRouter);
app.listen(3000,()=>{
console.log("开启成功")
})
cnpm install multer --save 下载multer 模块 用于图片上传
导出后引入到上面的文件 命名fileRouter
const express = require('express')
const router = express.Router()
const multer = require('multer')
var storage = multer.diskStorage({
destination: function(req,file,cb){
//指定文件路径
cb(null,'./static/imgs')
},
filename: function(req,file,cb){
//指定文件名
let exts = file.originalname.split('.')
let ext = exts[exts.length-1] //原文件后缀名 如果文件名是xxx.xxx.jpg取最后一个
let tmpname = (new Date()).getTime()+parseInt(Math.random()*9999) //时间戳+随机数 确保名字不重复
cb(null,`${tmpname}.${ext}`)
}
});
var upload = multer({
storage: storage
});
router.post('/upload',upload.single('imgsrc'),(req,res)=>{
console.log(req.file)
let {size,mimetype,path} = req.file
let types = ['jpg','jpeg','png','gif'] // 允许上传的数据类型
let tmpType = mimetype.split('/')[1]
//大小50MB以内
if(size > 51200000){
return res.send({err:-1,msg:'尺寸过大'})
}else if(types.indexOf(tmpType)==-1){
return res.send({err:-2,msg:'类型错误'})
}else{
let url=`/public/imgs/${req.file.filename}`
res.send({err:0,msg:'ok',imgres:url})
}
})
module.exports = router;