文件上传需要用到multer包
npm install multer
const express = require('express')
const multer = require("multer");
const md5 = require("md5-node");
const fs = require('fs');
const router = express.Router()
const models = require('../../models') // 模型对象
const Op = models.Sequelize.Op;
const tokenCheck = require('../middleware/middleware_token') // 中间件:token的创建于验证
const outputFormat = require('../outputFormat/outputFormat') // 中间件:统一返回格式
// 设置图片存储路径
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './images');
},
filename: function (req, file, cb) {
cb(null, `${Date.now()}${md5(file.originalname.split('.')[0])}.${file.originalname.split('.')[1]}`)
}
})
// 创建文件夹
var createFolder = function (folder) {
try {
// 测试 path 指定的文件或目录的用户权限,我们用来检测文件是否存在
// 如果文件路径不存在将会抛出错误"no such file or directory"
fs.accessSync(folder);
} catch (e) {
// 文件夹不存在,以同步的方式创建文件目录。
fs.mkdirSync(folder);
}
};
var uploadFolder = './images/';
createFolder(uploadFolder);
// 添加配置文件到muler对象。
var upload = multer({
storage: storage
});
// 文件上传请求处理,upload.array 支持多文件上传,第二个参数是上传文件数目
router.post('/uploadImg', upload.single('img'), (req, res) => {
// 读取上传的图片信息
var files = req.file;
// 设置返回结果
var result = {};
if (!files) {
outputFormat(res, '', '上传失败', 101)
} else {
files.path = files.path.split('\\').join('/')
result = {
url: 'http://127.0.0.1:3000/' + files.path
}
outputFormat(res, result)
}
});