js遍历文件夹(IE)

首先声明,本方法只适用于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());
					}
				}

 这样,我们就能拿到所有文件的完整路径和名称了。

你可能感兴趣的:(遍历文件夹)