路由拦截
var express = require('express');
var router = express.Router();
var user = require('../controllers/userController')
// 文件上传-中间件multer
let multer = require('multer')
// 设置文件上传后的保存地址
let upload = multer({ dest: './public/images/' })
// 单文件上传
router.post('/uploadUserHeadImg', upload.single('file'), user.uploadUserHeadImg);
// 多文件上传
router.post('/uploadImgs', upload.array('files', 5), user.uploadImgs);
module.exports = router;
处理函数
其实在进入该业务逻辑处理函数之前,也就是路由拦截部分,文件已经上传成功,此处的作用就是处理业务上的逻辑了,比如数据库操作等
var dbConfig = require('../util/dbConfig')
// 文件上传
let fs = require('fs') // 引入文件处理对象
const uploadUserHeadImg = (req, res) => {
if (!req.file) {
res.send({
code: 400,
msg: '上传文件不能为空'
})
} else {
let file = req.file
// 修改文件名字
fs.renameSync('./public/images/' + file.filename, './public/images/' + file.originalname)
// 设置响应类型以及编码
res.set({
'cpntent-type': 'application/json; charset=utf-8'
})
let { id } = req.query
let imageUrl = 'http://localhost:3006/images/' + file.originalname
let sql = 'update user set pic=? where id=?'
let sqlArr = [imageUrl, id]
let callBack = (err, data) => {
if (err) {
res.send({
code: 400,
msg: '上传成功,插入失败'
})
} else {
if (data.affectedRows === 1) {
res.send({
code: 200,
msg: '上传成功',
filePath: imageUrl
})
} else {
res.send({
code: 400,
msg: '数据库插入失败'
})
}
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack)
}
}
// 多文件上传
const uploadImgs = (req, res) => {
let files = req.files
if (!files.length) {
res.send({
code: 400,
msg: '上传文件不能为空'
})
} else {
for (let file of files) {
// 设置响应类型以及编码
res.set({
'cpntent-type': 'application/json; charset=utf-8'
})
// 修改文件名字
fs.renameSync('./public/images/' + file.filename, './public/images/' + file.originalname)
let imageUrl = 'http://localhost:3006/images/' + file.originalname
let sql = 'insert into attach_file (img_path, create_at) values (?,?)'
let sqlArr = [imageUrl, new Date()]
let callBack = (err, data) => {
if (err) {
res.send({
code: 400,
msg: '上传成功,插入失败'
})
} else {
if (data.affectedRows === 1) {
res.send({
code: 200,
msg: '上传成功',
filePath: imageUrl
})
} else {
res.send({
code: 400,
msg: '数据库插入失败'
})
}
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack)
}
}
}
module.exports = {
uploadUserHeadImg,
uploadImgs
}