一、需求
最近遇到的一个需求,利用JS读取共享文件夹下的文件名信息,然后在网页上列出文件名,供用户选择。
二、代码
JS读取文件需要插件支持,该插件只有IE支持,所以本文的代码只能在IE下运行。
<script type="text/javascript" charset="GBK"> var projArray=new Array(); //反斜杠需要会被转移,所以需要做以下处理 var projectFolderPath="\\\\aaa\\bbb\\ccc"; function load(){ var fileDiv=document.getElementById("container");
<span style="white-space:pre"> </span>//该插件就是JS读取文件、目录的插件 var fso = new ActiveXObject("Scripting.FileSystemObject"); var folder=fso.GetFolder(projectFolderPath); var subFolders = new Enumerator(folder.SubFolders); var id=0; for(;!subFolders.atEnd();subFolders.moveNext()){ //subFolders.item()获取的是全路径 var subfld=fso.GetFolder(subFolders.item()); projArray.push(subfld);
<span style="white-space:pre"> </span>//动态生成列表:采用bootstrap中的Button列表选项 var buttonStr='<button type="button" class="btn btn-primary btn-lg btn-block" onclick="btnOK(this)" id="'+id+'">'+subfld.Name+"</button>"; fileDiv.innerHTML+=buttonStr; id++; } } function btnOK(btn){ var enumFiles=new Enumerator(projArray[btn.id].files);
<span style="white-space:pre"> </span>//搜索该目录下是否存在'*.fly格'的文件 for(;!enumFiles.atEnd();enumFiles.moveNext()){ var file=enumFiles.item(); if(file.type.toLowerCase()=="TerraExplorer Header".toLowerCase()){ //sgworld.ProjectTree.LoadFlyLayer(file.path); sgworld.Open(file.path); return; } } alert("没有找到FLY文件!"); } </script>