- 第一步:首先需要安装依赖
npm i multer -S
- 第二步在路由 js 文件中引入一下依赖:
const router = require("express").Router(); //路由中间件
const multer = require("multer"); //文件上传中间件
const path = require("path"); //路径依赖,用于后面设置文件名称获取文件尾缀
- 第三步:设置保存路径和文件重命名
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "./public/uploads"); //设置文件存储路径
},
filename: function (req, file, cb) {
//设置存储的文件名称
// path.extname(file.originalname) ;//获取当前文件的尾缀
let fileData =Date.now() +"-" +Math.round(Math.random() * 1e9) + path.extname(file.originalname);
// Math.round(Math.random() *1E9)是生成一个整数部分9位数的随机数,再取整
cb(null, file.fieldname + "-" + fileData);
},
});
const upload = multer({ storage: storage });
如果不需要是文件名称,只是要得到这个文件,可以直接使用:
const upload = multer({ dest: 'uploads/' }) //直接存储到uploads文件夹里面,如果没有这个文件夹,保存时会自动新建一个
- 第四步:需要配置两个路由,
- 一个get路由,用于渲染上传文件的页面
router.get('/upload', (req, res) => {
res.render('upload') //渲染upload页面,是文件上传的页面
})
- 一个post路由,用于上传文件
router.post('/upload', upload.single('img'), (req, res) => {
res.send({
code: 0,
msy: '上传成功'
})
})
- 第五步 在另外一个js页面引入路由,分配端口
const express = require('express') //引入node的express框架
const path = require('path') //引入路径
const app = express() //启动一个应用程序
const uploadRouter = require('./routes/upload') //引入路由文件,路由页面需要导出
//配置模板引擎
app.set('views', path.join(__dirname, 'views'))
//指定哪个模板引擎
app.set('view engine', 'ejs')
//开启路由中间件
app.use(uploadRouter)
//分配端口
app.listen(6060, () => {
console.log('start at port 6060');
})