出现的问题是,req.files
死活都是 undefined
。
这个坑,花了我 整整两小时 的时间去排!!!有木有啊有木有!!!
最后最无语的是解决办法竟然是这样地坑……
有问题当然是先谷歌了~ 得到的结果不外乎以下三种:
- 表单没有设置
enctype="multipart/form-data"
- app.js 里没有
app.use(express.bodyParser())
- 上传文件的 input 元素写得有问题
一一排查之后,在后台输出 req.files
依旧是 undefined
。
然后我就把代码通读了一遍,没有任何 typo 之类的东西。
还怀疑是浏览器的问题,换了一个传,依旧 undefined
。
无奈,滚去看文档。翻到 bodyParser
的时候,发现有如下内容:
app.use(express.bodyParser());
// 等同于:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
于是我就把代码里与 express.json()
、expresss.urlencoded()
相关的代码删了,并把 app.use(express.bodyParser())
提前。
然!后!就!奇!迹!般!地!好!了!有!木!有!!!
有!木!有!比!这!更!坑!爹!的!出!错!原!因!啊!有!木!有!!!
然后,呼,测试了一下,发现 express.bodyParser()
不爽的对象是 app.router
,只要 bodyParser
放在 router
的后面,req.files
就一个劲地 undefined
。
卧槽,原因不深究了……累觉不爱 T T……