multer 中间件, 文件上传中间件操作

- 第一步:首先需要安装依赖

  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');
})

你可能感兴趣的:(node.js基础,node.js,javascript)