全局安装 Express
npm install express -g
全局安装 Express 生成器 express-generator
npm install express-generator -g
使用 express-generator 生成项目
express myMiddleware
cd myMiddleware
npm install
安装第三方中间件 multiparty
npm install multiparty -save
1、在 public 目录下创建 files 文件夹,用于保存上传的文件。
2、在 router 目录下创建 upload.js 文件,用于代码的实现。
3、在 views 目录下创建 index.html 文件,用于页面的实现。

upload.js --- 上传文件处理文件
var express = require('express');
var router = express.Router();
//引入 上传文件的 第三方中间件
var multiparty = require('multiparty');
//引入 格式字符串 模块
var util = require('util');
//引入 文件处理 模块
var fs = require('fs');
router.get('/', (req, res, next) => {
res.sendfile('./views/index.html')
});
router.post('/', (req, res, next) => {
var form = new multiparty.Form();
form.encoding = 'utf-8';
form.uploadDir = './public/files';
form.maxFilesSize = 20 * 1024 * 1024;
form.parse(req, (err, fields, files) => {
var filesTemp = JSON.stringify(files, null, 2)
if (err) {
console.log('报错了:' + err);
} else {
var inputFile = files.inputlie[0];
var uploadedPath = inputFile.path;
var dstPath = './public/files/' + inputFile.originalFilename;
// 重命名为真实文件名
fs.rename(uploadedPath, dstPath, (err) => {
if (err) throw err;
})
}
// res.end(util.inspect({ files: files, files: filesTemp })) //上传文件信息
res.end();
})
})
module.exports = router;
app.js --- 项目入口文件
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
/* 代码添加区域 */
var uploadRouter = require('./routes/upload');
/* 代码添加区域 */
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('/', indexRouter);
app.use('/users', usersRouter);
/* 代码添加区域 */
//上传文件
app.use('/uploading', uploadRouter);
/* 代码添加区域 */
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404));
});
//错误中间件
app.use((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;
index.html --- 上传文件的网页文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
上传文件
<form method="post" action='/uploading' enctype="multipart/form-data">
<input type="file" name="inputlie">
<input type="submit" value="上传">
</form>
</body>
</html>
在cmd窗口下输入 npm start 运行代码
npm start
启动该应用后,打开浏览器,访问 https://localhost:3000/uploading ,运行后便可以看到文件上传页面