最近做一個小項目,前端需要有一個功能是點擊某按鈕時,彈出文件選擇的框,然後獲取目錄並寫入對應的輸入框里,以往是選擇某個文件進行上傳,功能看起來有些像,但這次不同的是只能選擇某個目錄而不是文件,因為它並不是上傳,它只是為了選擇後台生成的文件保存的路徑。
於是網上查解決方案,查到兩種,
一種是僅在谷歌瀏覽器上有效的方式,在input節點里加一個屬性 webkitdirectory,就可以實現點擊彈出選擇目錄的功能,然後就可以截取目錄,此種方式對非空文件夾是可以的實現的,只需監聽此input的change事件即可,但如果選擇的是空文件夾,就不會觸發事件,就無法獲取路徑,所以這方法不復合我的需求。
另一種是只適用於IE瀏覽器的方式,即調用IE的activeX控制項,為點擊按鈕綁定事件,然後就可以獲取目錄,然後到目錄調到想要的地方即可,具體實現方式是:
<input id="show">
<button onclick="clickBtn()">點擊</button>
function click() {
try {
var Message = "\u8bf7\u9009\u62e9\u6587\u4ef6\u5939"; //選擇框提示 var Shell = new ActiveXObject("Shell.Application");
var Folder = Shell.BrowseForFolder(0, Message, 64, 17); //起始目錄為:我的電腦 //var Folder = Shell.BrowseForFolder(0, Message, 0); //起始目錄為:桌面 if (Folder != null) {
Folder = Folder.items(); // 返回 FolderItems 對象
Folder = Folder.item(); // 返回 Folderitem 對象
Folder = Folder.Path; // 返迴路徑
if (Folder.charAt(Folder.length - 1) != "\\") {
Folder = Folder + "\\";
}
document.getElementById('show').value = Folder;
return Folder;
}
} catch (e) { alert(e.message); }
}
但些方式也有一個問題是,此控制項是默認關閉的,需要用戶手動啟用,並且要把本站點加入可信任站點才行,具體設置過程是:
1. 單擊菜單工具->Internet選項->安全->受信任站點->站點->把此網站設為可信站點
2. 在自定義級別->對沒有標記為安全的ActiveX控制項進行初始化和腳本運行"----"啟用"
Ⅱ 用js怎麼實現彈出個選擇文件的對話框
可以實現的,大概的思路是這樣:
1.先新建一ASP頁(不知道你用什麼來做的,就以asp為例吧),該頁的作用是讀取伺服器上某個目錄下的所有文件,並顯示文件列表,做出類似選擇文件對話框的樣子。具體代碼網上有很多,你以「asp 遍歷文件夾」作為關鍵字在或google中搜一下。
2.在「修改」按鈕上使用Javascript的模態對話框彈出上一步做出來的網頁。
就是window.showModalDialog(),模態對話框可以接收父窗口傳來的參數,也可以返回參數給父窗口,利用這一特性,當你在對話框中選擇好文件點確定時,可以從對話框將選擇內容返回到父頁面上。具體怎麼用?同樣建議你以「showModalDialog」作為關鍵字到網上去搜一下。
Ⅲ 請問如何用js實現打開選擇文件和保存文件至自選路徑的對話框
下面是一個VB腳本的,需要加入可信站點才能彈出對話框,打開要保存的文件夾
<script language="vbscript">
Function Foder()
Const MY_COMPUTER = &H11&
Const WINDOW_HANDLE = 0
Const OPTIONS = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "請選擇文件夾:", OPTIONS, strPath)
If objFolder Is Nothing Then
exit Function
End If
Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path
document.frmList.FODER_PATH.value = objPath
End Function
</script>
<input type = "button" name = "path" size = "100" onclick="Foder()" value="選擇文件夾" />
客戶導入選擇文件就用file就可以
<input type="file" name="DATA_RESTORE_PATH" maxlength="20" style="WIDTH: 100px" >