0

我想根据文件的文件名使用通过浏览目录树收集的信息生成本地 html 页面内容。我没有使用 javascript 的经验,我认为这将是最容易完成任务的。该页面必须与 IE7 一起正常工作。现在,让我举一个我想做的例子。

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

可行吗?

4

2 回答 2

1

用javascript读取服务器的文件系统是不可能的,它是在客户端执行的。您必须使用服务器端语言(如 php 或 java)来执行此操作。

于 2013-07-02T15:56:17.553 回答
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:';),读取系统中的所有文件会花费很多时间。

于 2013-07-03T07:38:22.270 回答