2011-08-11 90 views
42

可能重複多個文件:
Retrieving file names out of a multi-file upload control with javascript獲取輸入類型=「文件」值,當它有選擇

從HTML5輸入類型=「文件」允許用戶通過選擇多個文件添加多個=「多」:

<input type="file" multiple="multiple" /> 

我的問題是:如何才能得到該輸入的價值?使用.value時,它只返回所選第一個文件的文件名,但選擇多個文件時,我無法查看其他文件。

我有什麼:

<input type="file" multiple="multiple" onchange="alert(this.value)" 
    onmouseout="alert(this.value) /> 

這是我告訴你,只顯示一個選定文件的名稱。

注:我不想編輯值(我知道這是不可能的)這些文件的唯一名稱

謝謝!

回答

77

選擇的文件存儲在磁盤陣列:[input].files

例如,您可以訪問項目

// assuming there is a file input with the ID `my-input`... 
var files = document.getElementById("my-input").files; 

for (var i = 0; i < files.length; i++) 
{ 
alert(files[i].name); 
} 

的jQuery舒適的人來說,這是同樣容易

// assuming there is a file input with the ID `my-input`... 
var files = $("#my-input")[0].files; 

for (var i = 0; i < files.length; i++) 
{ 
alert(files[i].name); 
} 
+2

文件輸入的文件屬性未定義在IE上,雖然作品在其他瀏覽器就好了。你知道有什麼方法可以解決這個問題嗎? –

+3

'文件[i]'在IE9中未定義。你能解決如何在IE9中完成這項工作嗎? – OO7

+2

@ OO7 IE9不支持多個輸入文件。只有IE10 +。 – barell

8

use input.files property。它是File objects集合,每個文件都有一個name屬性:

onmouseout="for (var i = 0; i < this.files.length; i++) alert(this.files[i].name);" 
+0

謝謝,它和freedompeace的答案完全一樣(name或fileName都可以),但是他先回答,我無法設置兩個答案,無論如何都是+1。 – spuas

+0

實際上,他沒有正確的代碼例子回答並編輯他發佈我的郵件後。但是 - 並不重要。 :) –

相關問題