路由攔截
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
}