2013-12-15 83 views
0

這是我的HTML如何用expressjs上傳多個文件?

<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是對象。

回答

1

在我看來,你應該檢查它是一個數組還是一個對象;當它不是一個數組,把它包裝成一個:

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

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

哦,謝謝,我正在尋找一種方法來判斷一個對象是否是一個數組,你給出的方法是簡潔的,而方法Object.prototype.toString.call(paths)=='[object Array]'是非常單調乏味的。 – Arnold

+1

另一個可能是'paths.constructor.name ==='Array''。 – robertklep

0

我找到一個方法,我認爲我可以使用

var paths=[].concat(paths); 

然後路徑將永遠是一個數組