首先声明,本方法只适用于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());
}
}
这样,我们就能拿到所有文件的完整路径和名称了。