使用基于目录树中可用文件的链接生成html页面

时间:2013-07-02 15:49:58

标签: javascript html dom

我想使用浏览目录树收集的信息生成本地html页面内容,具体取决于文件的文件名。我没有javascript的经验,我认为这是最容易完成任务的。该页面必须正确使用IE7。现在,让我举一个我想做的事情的例子。

html文件位于本地目录中,例如HTML_DIR。有几个子目录,比如HTML_DIR\AHTML_DIR\BHTML_DIR\C包含名为XXX_001-999.xmlYYY_001-999.xmlZZZ_001-999.xml的xml文件,而每种类型都有可以在每个子目录中找到。因此,示例性场景将是:

HTML_DIR
/A
  - XXX_001.xml
  - XXX_002.xml
  - XXX_003.xml
  - YYY_001.xml
  - YYY_002.xml
  - YYY_003.xml
/B
  - ZZZ_001.xml
  - ZZZ_002.xml
  - ZZZ_003.xml
  - ZZZ_111.xml
  - XXX_111.xml
/C
  - YYY_001.xml
  - YYY_002.xml
  - YYY_003.xml
  - ZZZ_111.xml
  - XXX_111.xml

现在,我想在html页面上为每个子目录动态生成表,行根据包含的文件,所以页面看起来像:

Table A
XXX    YYY    ZZZ    Link
001    001           http://localhost:8080/001.html
002    002           http://localhost:8080/002.html
003    003           http://localhost:8080/003.html

Table B
XXX    YYY    ZZZ    Link
              001    http://localhost:8080/001.html
              002    http://localhost:8080/002.html
              003    http://localhost:8080/003.html
111           111    http://localhost:8080/111.html

Table C
XXX    YYY    ZZZ    Link
       001           http://localhost:8080/001.html
       002           http://localhost:8080/002.html
       003           http://localhost:8080/003.html
111           111    http://localhost:8080/111.html

可行吗?

2 个答案:

答案 0 :(得分:1)

使用javascript(在客户端上执行)无法读取服务器的文件系统。 您必须使用服务器端语言(如php或java)来执行此操作。

答案 1 :(得分:0)

这是一个用于读取给定文件夹中所有文件和文件夹的简单代码段,但我不确定您是否可以使用它读取虚拟文件夹。

window.onload = function () {
    var topRoot = 'YOUR_TOP_FOLDER_PATH', // Like 'C:/xmls'   
        fso = new ActiveXObject('Scripting.FileSystemObject'),
        getFolderTree = function (path) {
            var allfiles = [],
                getTree = function (subfolders) {
                    var subs, files;
                    while (!subfolders.atEnd()) {
                        subs = subfolders.item().SubFolders;
                        if (subs) {
                            getTree(new Enumerator(subs));
                        }
                        files = new Enumerator(subfolders.item().files);
                        while (!files.atEnd()) {
                            // Add a file filter here
                            allfiles.push(new String(files.item()));
                            files.moveNext();
                        }
                        subfolders.moveNext();
                    }
                };
            getTree(new Enumerator(fso.GetFolder(path).SubFolders));
            return allfiles;
        },
        tree = getFolderTree(topRoot),
        dir = document.getElementById('dir'),
        n = 0;
    tree.sort();
    // This is just an example print
    for (; n < tree.length; n++) {
        dir.innerHTML += tree[n] + '<br>';
    }
    return;
}

只需将此功能放入您自己的架构中,然后添加topRoot,文件过滤器和打印版面。

请注意,topRoot应该是一个子文件夹(即不要使用topRoot = 'C:';),阅读系统中的所有文件会花费很多时间。