var express = require('express')
var router = express.Router()
const { IncomingForm } = require('formidable')
const fs = require('fs')
router.post('/', function (req, res, next) {
// 文件上传操作的配置项
let options = {
// 是否支持多文本上传
multiples: true,
// 是否保留文件的后缀名
keepExtensions: true,
// 指定上传文件的的存放位置
uploadDir: 'public/images',
// 是否允许上传空文件
allowEmptyFiles: false,
}
// 创建一个IncomingForm对象
const form = new IncomingForm(options)
// 保存文本域数据对象
let fields = {}
// 保存文件域数据数组
let files = []
// 监听文本域的数据请求
form.on('field', function (name, value) {
fields[name] = value
})
// 监听文件域的数据请求
form.on('file', function (formName, file) {
files.push({ imgUrl: file.path, fileName: file.name })
})
// 监听数据传递结束事件
form.on('end', function () {
let pics = []
// 遍历数组,修改文件名
files.forEach((item) => {
let oldpath = item.imgUrl
let prefix = oldpath.substring(0, oldpath.lastIndexOf('\\') + 1)
let fileName = Date.now() + item.fileName
let newpath = prefix + fileName
// 修改文件名称
fs.renameSync(oldpath, newpath)
let object = {}
object.imgUrl = 'http://127.0.0.1:3000/images/' + fileName
pics.push(object)
})
// 封装文本域对象
fields.pics = pics
// 返回数据
res.send(fields)
})
form.parse(req)
})
module.exports = router