最近接触的一个小项目,需要文件管理功能,项目本身已经用express和express-http-proxy搭了个反向代理,使用bodyParser之类的middleware,用来解析api请求参数。
代码如下:
const app = express();
const proxy = require('express-http-proxy');
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));
### 下面Proxyconfig自定义
app.use('/proxy', proxy(Proxyconfig));
现需要新增一个文件上传功能,现有代码运行起来发现文件无法转发。进行req和body的console是没有发现files
的值
后看了一天文档,发现只要更改一下解析请求的配置就可以了
代码如下:
<!-- 判断是否为multipart -->
const isMulti = req => req.headers['content-type'] && req.headers['content-type'].indexOf('multipart') > -1;
<!-- 是否使用bodyParser进行解析 -->
<!-- 经过bodyParser解析后 一些key value会被忽略掉,包括files-->
<!--不经过解析就可以进行文件转发-->
const middle = () => (req, res, next) => {
if(isMulti(req)) {
return next();
}
return bodyParser.urlencoded({extended: false})(req, res, next);
}
// app.use('/proxy', proxy(Proxyconfig));
app.use('/proxy', middle(), (req, res, next) => {
###do something....
});
网友评论