这是我的HTML
<form action="/keys/upload" method="post" enctype="multipart/form-data">
<ul>
<li><label>文件</label><input type="file" name="keys" multiple></li>
<li><input type="submit" value="submit"></li>
</ul>
</form>
这是我的句柄功能
app.post('/keys/upload',keysRoutes.addKeys);
var addKeys=function(req,res){
var temppaths=req.files.keys[0].path;
console.log(temppaths);
res.end(JSON.stringify(temppaths));
};
如果我上传了多个文件,那么req.files.keys[0].path
工作正常,但是当我只上传一个文件时,它会出错,我必须将其替换为req.files.keys.path
。我不知道会上传多少文件,所以我该怎么办?
有时req.files.keys是数组,有时req.files.keys是对象。
答案 0 :(得分:1)
在我看来,你应该检查它是一个数组还是一个对象;当它不是数组时,将其包装成一个:
var paths = req.files.keys || [];
if (! (paths instanceof Array) ) {
paths = [ paths ];
}
答案 1 :(得分:0)
我找到了一种方法,我想我可以使用
var paths=[].concat(paths);
然后路径将始终是一个数组