如何使用快递js上传多个文件?

时间:2013-12-15 09:21:37

标签: forms node.js file-upload express

这是我的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是对象。

2 个答案:

答案 0 :(得分:1)

在我看来,你应该检查它是一个数组还是一个对象;当它不是数组时,将其包装成一个:

var paths = req.files.keys || [];

if (! (paths instanceof Array) ) {
  paths = [ paths ];
}

答案 1 :(得分:0)

我找到了一种方法,我想我可以使用

var paths=[].concat(paths);

然后路径将始终是一个数组