2012-10-17 45 views
42

所以我有一個基本的輸入類型"file"但是我希望用戶能夠選擇文件夾位置而不是文件。如何從HTML輸入類型「文件」或任何其他方式獲取文件夾目錄?

我怎樣才能得到這個輸入來選擇一個文件夾而不是一個文件,或者有另一種方式來做到這一點?

+0

瀏覽一個文件? – hjpotter92

+1

您是否嘗試上傳選定文件夾中的所有文件? –

+1

問題是,一旦你得到它,你將如何處理文件夾?你想上傳文件夾中的所有文件嗎?或者對文件夾做其他事情?瀏覽器通常無法直接對文件夾執行任何操作,因此除非您計劃上傳內容,否則不需要太多邏輯來指定文件夾。 – Spudley

回答

1

您很可能正在使用flash/silverlight/activeX控件。 <input type="file" />控件不處理該問題。

如果您不介意用戶選擇文件作爲獲取其目錄的手段,那麼您可能會綁定到該控件的change事件,然後剝離文件名部分並將路徑保存到某處 - 但這是關於好,因爲它得到。

請記住,網頁旨在與服務器進行交互。沒有關於提供本地目錄到遠程服務器的「典型」(服務器無法訪問它,所以爲什麼要問它)?但是文件是有選擇地傳遞信息的手段。

45

無意中發現這個頁面上爲好,然後發現這是可能的只是JavaScript的(如ActiveX或Flash無插件),但只是在鍍鉻:

https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3

基本上,他們增加了對支持文件輸入元素「webkitdirectory」上的新屬性。您可以使用它像這樣:

<input type="file" id="ctrl" webkitdirectory directory multiple/>

它可以讓你選擇的目錄。對於支持多文件選擇但不支持目錄選擇的瀏覽器來說,多屬性是一個很好的回退。

當您選擇一個目錄時,文件可以通過控件的dom對象(document.getElementById('ctrl'))獲得,就像它們具有multiple屬性一樣。瀏覽器遞歸地將所選目錄中的所有文件添加到該列表中。

您已經可以添加目錄屬性,以及在此情況下,得到在某個時刻標準化(找不到任何信息有關該)

+3

請注意,但是,這會阻止選擇單個文件的可能性。到目前爲止,使用「標準」方式(非Flash,非Silverlight等)選擇文件和目錄的唯一方法)是通過提供兩個獨立的輸入元素。 –

+0

@NikolayMelnikov或使用拖放操作 – antonj

+0

如何讓它接受包括文件和文件夾在內的多種東西? – Casper

-1

儘管它已經是一個老問題,這可能會幫助別人。

我們可以選擇多個文件,而你爲什麼會選擇保存的文件夾位置使用「多重」

<input type="file" name="datafile" size="40" multiple> 
相關問題