express专题

143 阅读1分钟

express的req.body为undefined

是因为中间件顺序问题,如果bodyParser放在下边两个之后,那么req.body为undefined

//负责解析请求参数的中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(history());
//将所有静态资源访问导向public文件夹
app.use(express.static(path.join(__dirname, STATIC_PATH)))

上传中间件multer

//多文件上传时
app.post(
    '/photos/upload', 
    upload.array('photos', 12), 
    function (req, res, next) {
        // req.files 是 `photos` 文件数组的信息
        // req.body 将具有文本域数据,如果存在的话
})

/*
photos,指的是FormData的域,而不是文件名,所以ajax上传的写法为
*/
let fd= new FormData();
files.forEach((ele) => {
  /*- 每个文件都属于photos域 -*/
  fd.append('photos', ele);
});
Axios.form({
  url: '/uploads',
  data: {
    photo: fd,
  }
})