目录
三.在router文件夹的fileRouter.js文件下编写如下代码
一.准备
下载第三方插件Multer
npm install multer --save
二.在入口文件下编写如下代码
- 引入依赖
- 封装处理路径函数
- 设置 multer 的配置对象
- 为 multer 添加配置
// 引入依赖
const multer = require('multer');
const path = require('path');
const express=require('express');
const app=express();
//解析post
const bodyparser=require('body-parser')
app.use(bodyparser.urlencoded({ extended: false }));
app.use(bodyparser.json());
//路由
const fileRouter=require('./router/fileRouter');
app.use('/',fileRouter);
app.listen(3000,()=>{
console.log('server start');
})
三.在router文件夹的fileRouter.js文件下编写如下代码
const express=require('express');
const router=express.Router();
const multer=require('multer');
// 设置 multer 的配置对象
var storage = multer.diskStorage({
destination: function(req,file,cb){
//指定文件路径
cb(null,'../Static/img')
},
filename: function(req,file,cb){
//指定文件名
let exts=file.originalname.split('.');
let ext=exts[exts.length-1];
let tmpname=(new Date()).getTime()+parseInt(Math.random()*9999);
cb(null,`${tmpname}.${ext}`);
}
})
var upload = multer({
storage: storage
})
//图片上传 //为multer添加配置
router.post('/ChangePicture',upload.single('picture'),(req,res)=>{
let {size,mimetype}=req.file;
let types=['jpg','gif','jpeg','png']; //允许上传的数据类型;
let tmptype=mimetype.split('/')[1];
if(req.file){
if(size>=5000000){
res.send({err:-1,msg:'图片内存大于5MB!'}); //图片大小
}else if(types.indexOf(tmptype)==-1){
res.send({err:-2,msg:'文件类型错误!'});
}else{
console.log(req.file);
let url=`/public/img/${req.file.filename}`;
res.send({err:0,msg:'图片上传成功!',img:`${url}`});
}
}else{
res.send({err:-1,mag:'参数错误!'})
}
})
module.exports=router;
在该配置中可以设置文件保存的地址、文件名称、限制上传的文件格式、文件大小
上面的 upload.single('picture') 表示单文件上传,并且字段名为 "picture",后面上传图片的字段必须保持一致