首先我们需要去下载
express 用于路由的访问
busboy 用于解析接受的参数
fs 用于创建可写入的流
const app = require('express')();
const Busboy = require('busboy');
const fs = require('fs');
//事件监听制的解析文件,支持上传多个
app.post('/testBuyBoy', (req, res, next) => {
const busboy = new Busboy({ headers: req.headers });//通过请求头创建BusBoy对象
busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {//字段名,文件,文件名,编码格式,文件类型
//console.log('文件 = ','file','文件名称 = ',filename,' 编码格式 = ',encoding,'文件类型 = ',mimetype);
file.on('data', function (data) {//监听data事件,接受传递来的文件,如果文件过大,此事件会被执行多次
//console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
});
let arr = [];
arr = filename.toString().split('.');//对传递的文件名进行拆分
const pathData = arr[0] + '(' + parseInt(Date.parse(new Date()).toString().substr(0, 10)) + ')';//文件名+十位时间戳.文件类型
file.pipe(fs.createWriteStream('upload/' + pathData + '.' + arr[1]));//利用fs模块创建可以写入的流,并指定保存路径和名称
file.on('end', function () {//监听end事件,文件数据接受完毕,关闭这个可写流
//console.log('File [' + fieldname + '] Finished');
});
});
busboy.on('field', function (fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) {
//console.log('Field [' + fieldname + ']: value: ' + inspect(val));
});
busboy.on('finish', function () {//指定完成后的操作,完成后关闭页面并跳转至根路径 /
//console.log('Done parsing form!');
//res.writeHead(303, { Connection: 'close', Location: '/' });
res.end();
});
req.pipe(busboy);
});
module.exports = app;
然后再在app.js入口文件中配置公开文件夹路径可以进行测试
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const busRouter = require('./routes/testBusBoy');
const userTest = require('./server/user/router/index');
const mongo = require('./mongodb-config/mongoConfig');
const redis = require('./redis-config/redis-config')
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'upload')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/userTest',userTest);
app.use('/busTest',busRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;