2010-05-11 51 views
43

如何在html頁面中創建目錄選擇器。
如果我使用輸入文件元素,我只能選擇文件,但我需要選擇目錄。
我需要這樣做,因爲用戶應該在他的電腦裏選擇一條正確的路徑。
任何解決方案?HTML頁面中的目錄選擇器

+2

現在可以使用HTML5了,至少在chrome中是這樣:http:// stackoverflow。com/questions/24718769/html5-javascript-how-to-get-selected-folder-name – mtyson 2016-09-30 13:57:06

回答

21

出於安全原因,無法在純HTML/JavaScript中完成。

選擇一個上傳文件是最好的,即使這樣你也不會在現代瀏覽器中獲得完整的原始路徑。

您可以使用Java或Flash將某些東西放在一起(例如,使用SWFUpload作爲基礎),但是它有很多工作並帶來了額外的兼容性問題。

又一想將打開一個iframe顯示用戶C:驅動器(或其他),但即使這是可能的今天(可以阻止出於安全原因,在很長一段時間沒有試過),這將是不可能爲您的網站站點與iframe進行通信(再次出於安全原因)。

你需要做什麼?

+0

我需要它來選擇計算機內部的路徑,而不是上傳。 我使用此路徑來保存文件,但使用JSP功能。 – enfix 2010-05-11 10:14:02

+2

@enfix如何將JSP服務器中的文件保存到用戶本地計算機上的某個路徑中?我不明白。你可以編輯你的問題來澄清? – 2010-05-11 10:15:09

+0

我需要獲取用戶想要保存文件的路徑,但這些文件是用JSP頁面中的java函數callend保存的。 這個功能需要一個路徑來保存文件。就這樣。 我保存多個文件,我需要用這個java函數創建文件夾和其他東西。 – enfix 2010-05-11 10:26:43

2

腳本編寫是不可避免的。

由於存在安全風險,未提供此信息。 <input type='file' />是最接近的,但不是你要找的。

結帳this example使用Javascript來實現你想要的。

如果操作系統是windows,則可以使用VB scripts訪問核心控制文件以瀏覽文件夾。

46

試試這個,我認爲它會爲你工作:

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

您可以在https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3, 找到這個演示,如果你需要更多信息,你可以找到它 here

+0

我的印象是,您的建議可用於上傳文件夾,而不是獲取路徑。 – 2016-03-11 09:12:06

+2

這適用於Firefox,但不適用於Chrome。 – 2016-06-27 11:30:39

+0

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory獲取文檔。它被稱爲「非標準」。它有效地上傳遞歸包含的文件(?),也暴露文件夾名稱。這將在大多數情況下執行 – Blauhirn 2017-03-04 09:26:33

1

在情況下,如果你是在服務器和用戶(例如,你正在創建它通過瀏覽器的工作原理的應用程序,你需要選擇一個文件夾),然後嘗試點擊瀏覽器

一些按鈕時,從服務器調用 JFileChooser
JFileChooser chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File(".")); 
chooser.setDialogTitle("select folder"); 
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
chooser.setAcceptAllFileFilterUsed(false); 

此代碼剪斷從here

0

我做了一個變通。我有一個隱藏的文本框來保存值。然後,在form_onsubmit上, 我複製了路徑值,減去文件名到隱藏文件夾。然後,將fileInput框設置爲「」。這樣,沒有文件上傳。 我不記得fileUpload控件的事件。也許onchange。有一陣子了。如果有值,我解析文件名並將文件夾放回盒子。當然,你會驗證該文件是一個有效的文件。 這會給你的客戶端工作站文件夾。
但是,如果您想反映服務器路徑,那需要採用完全不同的編碼方法。

+0

用戶將不得不接受任何文件的培訓。它很笨。但是,在捏的作品。向FileUpload控件添加onchange =「parseFilePath()」。 function parseFileUploadPath(){ var upl = document.getElementById(「<%= this.FileUpload1.ClientID%>」); if(upl.value!=「」)var pos = upl.value.lastIndexOf(「\\」) document.getElementById(「<%= this.TextBox1.ClientID%>」)。value = upl。 value.substr(0,pos) } } – user8004777 2017-05-12 20:03:07

+0

對不起, 更完整的HTML。 – user8004777 2017-05-12 20:07:41