- 安装 multer
npm i multer
-
upload.js
/* 上传文件工具 */
const fs = require('fs') const path = require('path') var multer = require('multer') const {filePath} = require('../config.js')
const upload = multer({ storage: multer.diskStorage({ //设置文件存储位置 destination: function(req, file, cb) { let dir = filePath //图片存储的目录 //判断目录是否存在,没有则创建 if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }) } //dir就是上传文件存放的目录 cb(null, dir) }, //设置文件名称 filename: function(req, file, cb) { // 取无后缀的文件名 let ex_name = file.originalname.split('.')[0] //防止文件名重复,为文件名加上时间戳 let fileName = ex_name + '-' + Date.now() + path.extname(file.originalname) //fileName就是上传文件的文件名 cb(null, fileName) } }) })
module.exports = upload
-
router文件
/* 公告管理路由模块 */
var express = require('express') // 导入文件上传模块 const upload = require('../utils/upload') // 导入公告路由处理函数模块 const noticeHandler = require('../router_handler/notice')
var router = express.Router()
router.post('/upload', upload.single("img"), noticeHandler.upload)
module.exports = router
-
router_handler文件
/* 公告管理函数处理模块 */
// 导入数据库操作模块 const db = require('../db/index') const {readFilePath} = require('../config')
// 上传文件成功后的回调 exports.upload = (req, res) => { res.send({ errno: 0, data: { url: readFilePath + req.file.filename, alt: '这是一张图片', href: readFilePath + req.file.filename } }) }
-
app.js
// 注册路由模块 app.use('/user', userRouter) app.use('/application', applicationRouter) app.use('/notice', noticeRouter)
-
测试