解决方案1:调用windows 的shell,但会有安全问题.
* browseFolder.js
* 该文件定义了BrowseFolder()函数,它将提供一个文件夹选择对话框
* 以供用户实现对系统文件夹选择的功能
* 文件夹选择对话框起始目录由
* Shell.BrowseForFolder(WINDOW_HANDLE, Message, OPTIONS, strPath)函数
* 的strPath参数设置
* 例如:0x11--我的电脑
* 0 --桌面
* "c:\\"--系统C盘
*
* 用如下代码把该函数应用到一个HTML文件中:
* <script src="browseFolder.js"></script>
* 或把下面代码直接COPY到<script language="javascript">...</script>标签中;
* 特别注意的是,由于安全方面的问题,你还需要如下设置才能使本JS代码正确运行,
* 否者会出现"没有权限"的问题.
*
* 1、设置可信任站点(例如本地的可以为:http://localhost)
* 2、其次:可信任站点安全级别自定义设置中:设置下面的选项
* "对没有标记为安全的ActiveX控件进行初始化和脚本运行"----"启用"
/***
path 要显示值的对象id
****/
function browseFolder(path) {
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(path).value = Folder;
return Folder;
}
}
catch (e) {
alert(e.message);
}
}
使用的时候:
<td>
<input type="text" name="path" />
</td>
<td>
<input type="button" οnclick="browseFolder('path')"
value="选择生成路径" />
</td>2.解决方案二: 自己写一个js读取本地硬盘的选择框, 缺点是外观上较上一个差一些.
1. <html>
2. <head>
3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4. <title>无标题文档</title>
5. </head>
6. <body>
7. <table border="0" cellpadding="0" width="100%" id="tb_show">
8. <tr>
9. "18%">文件保存位置:</td>
10. "82%">
11. "file" size="40" styleClass="inputbox"/>--%>
12. "backDir" type="text" value ="C:\" size="100" width="500">
13. </td>
14. </tr>
15.
16. <tr>
17. <td>目录位置:</td>
18. <td>
19. "tables_drive" id="tables_drives" οnchange="get_drives()"
20. </td>
21. </tr>
22.
23. <tr>
24. "2">
25. "table_folder" id="table_folder" size="10" multiple οndblclick="get_file()"></select>
26. </td>
27. </tr>
28.
29. <tr>
30. "2">
31. "red">说明:双击列表框的一个选项,就将该文件夹下面的文件夹显示在该列表框中。第一个就是根目录</font>
32. </td>
33. </tr>
34. </table>
35. </body>
36. </html>
37. <script>
38. /**//*
39. *初始化,将系统所有的驱动器放入table_drives列表
40. */
41. window.onload = new function
42. {
43. var
44. new ActiveXObject("Scripting.FileSystemObject");
45. new
46. "";
47. for
48. {
49. x = e.item();
50. s = s + x.DriveLetter;
51. ":";
52. if
53. n = x.ShareName;
54. else if
55. n = x.VolumeName;
56. else
57. "[驱动器未就绪]";
58. ",";
59. }
60. var drives = s.split(",");
61. var tableDrives = document.getElementById("tables_drives");
62. for ( var
63. {
64. var option = document.createElement("OPTION");
65. ":");
66. "["+drives[i].split(":")[0]+":]"+drives[i].split(":")[1];
67. "["+drives[i].split(":")[0]+":]"+drives[i].split(":")[1];
68. tableDrives.add(option);
69. }
70. }
71.
72. /**//*
73. *tables_drives列表中选中的驱动器上所有文件夹放入table_folder列表中
74. */
75. function
76. {
77. var tableDrives = document.getElementById("tables_drives");
78. var tableFolders = document.getElementById("table_folder");
79. for ( var
80. {
81. if ( tableDrives.options[i].selected == true
82. {
83. var
84. var drive = tableDrives.options[i].value.split(":")[0].substring(1,tableDrives.options[i].value.split(":")[0].length);
85. "backDir").value = drive + ":\\";
86. new ActiveXObject("Scripting.FileSystemObject");
87. if
88. {
89. d = fso.GetDrive(drive);
90. if
91. {
92. f = fso.GetFolder(d.RootFolder);
93. new
94. "";
95. for
96. {
97. s += fc.item();
98. ",";
99. }
100.
101. var
102. while(len >= 0)
103. {
104. tableFolders.options.remove(len);
105. len--;
106. }
107. var option = document.createElement("OPTION");
108. ":\\";
109. ":\\";
110. tableFolders.add(option);
111. var folders = s.split(",");
112. for
113. {
114. "OPTION");
115. option.value = folders[j];
116. option.text = folders[j];
117. tableFolders.add(option);
118. }
119. }
120. else
121. {
122. "无法改变当前内容!")
123. }
124. }
125. else
126. return false;
127. }
128. }
129. }
130.
131. /**//*
132. *table_folder双击选项中的一个选项,就将该文件夹下面的文件夹显示在table_folder列表中。
133. */
134. function
135. {
136. var tableFolders = document.getElementById("table_folder");
137. var tableDrives = document.getElementById("tables_drives");
138. for ( var
139. {
140. if ( tableFolders.options[i].selected == true
141. {
142. var
143. var
144. if ( folderpath.charAt(folderpath.length-1) == "\\"
145. {
146. "backDir").value = folderpath;
147. }
148. else
149. {
150. "backDir").value = folderpath + "\\";
151. }
152.
153.
154. new ActiveXObject("Scripting.FileSystemObject");
155. f = fso.GetFolder(folderpath);
156. new
157. "";
158. for
159. {
160. s += fc.item();
161. ",";
162. }
163. var
164. while(len >= 0)
165. {
166. tableFolders.options.remove(len);
167. len--;
168. }
169. var opt = "";
170. var opt1 = "";
171. for ( j = 0; j < folderpath.split("\\").length; j++ )
172. {
173. var option = document.createElement("OPTION");
174. "\\")[j]+"\\";
175. if
176. {
177. opt1 = opt;
178. option.value = opt1.substring(0,opt1.length-1);
179. option.text = opt1.substring(0,opt1.length-1);
180. tableFolders.add(option);
181. }
182. else
183. {
184. option.value = opt;
185. option.text = opt;
186. tableFolders.add(option);
187. }
188.
189. }
190. if
191. {
192. tableFolders.options.remove(1);
193. }
194. if ( s != ""
195. {
196. var folders = s.split(",");
197. for
198. {
199. "OPTION");
200. option.value = folders[j];
201. option.text = folders[j];
202. tableFolders.add(option);
203. }
204. }
205. }
206. }
207. }
208. </script>
















