首先声明,本方法只适用于IE内核的浏览器,因为要用到ActiveX控件,ff啥的都不支持的,你懂得。
第一点是要选择文件夹,于是要用的Shell这个东西,这东西没研究过,反正能用。代码如下
try { var Message = "\u8bf7\u9009\u62e9\u6587\u4ef6\u5939"; //选择框提示信息 var Shell = new ActiveXObject("Shell.Application"); 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; buttonSta(1); return Folder; } }catch (e) { W.$.dialog.alert('浏览器权限不够,请将可ActiveX控件设为启用!'); }
将这个写到一个方法里面,触发之后就会弹出一个文件选择器的东西,像表单里面的file点击按钮后的样子。
选择了之后,将文件夹路径存到一个input里面,document.getElementById(path).value = Folder;就是了。然后就是遍历文件夹。遍历文件夹用到的FSO(全称FileSystemObject);上代码
var fso = new ActiveXObject("Scripting.FileSystemObject"); var filePath = document.getElementById("filePath").value; if(filePath!=""){ var f = fso.GetFolder(filePath); bianli(f); function bianli(folder){ //取文件夹 var underFolders = new Enumerator(folder.SubFolders); //取文件 var underFiles = new Enumerator(folder.files); for (;!underFiles.atEnd();underFiles.moveNext()){ var fn = "" + underFiles.item(); if(lastname(fn)){//验证后缀名是否为图片 uploadImgNames1 += fn + ",";//将文件名用,分割 i++; } } for (;!underFolders.atEnd();underFolders.moveNext()){ bianli(underFolders.item()); } }
这样,我们就能拿到所有文件的完整路径和名称了。