JavaScript:读取文件夹中的文件

12

编辑: 我试图读取特定文件夹中的所有文件并列出其中的文件,而不是读取特定文件的内容。我尝试简单地创建了一个FileSystemObject,但它也没有执行任何操作。我在创建FileSystemObject之前显示了一个警报(弹出),之后显示了一个警报(未显示)。因此,问题在于仅仅创建对象。

    alert('1');
    var myObject, afolder, date;
    alert('2');
    myObject = new ActiveXObject("Scripting.FileSystemObject");
    alert('3');
    afolder = myObject.GetFolder("c:\\tmp");
    alert('4');
    date = afolder.DateLastAccessed;
    alert("The folder"+name+" is a temporary folder.");

我这样做是正确的吗?

谢谢!


你的浏览器错误控制台显示了什么? - Oswald
它没有说任何话,只是在弹出“2”后不再执行任何操作。我能调试它吗? - Killerwes
抱歉,我刚用Firebug调试了一下。错误提示是“ActiveXObject未定义”。 - Killerwes
2
你说“firebug”,我听到的是Firefox。Firefox不知道ActiveXObject,因为它是专有的微软技术。 - Oswald
不清楚特定文件夹是由用户选择还是在代码中预定义。如果是前者(并且文件夹选择对话框对您来说可以接受),则有一个简单的HTML5解决方案。 - Stan
ActiveXObject 只在 IE/Edge 中有效。我认为它对你不起作用是因为你正在使用 Firefox。 - Cannicide
2个回答

4
我在谷歌搜索中找到的方法使用了HTML5,所以如果你正在使用现代浏览器,那么应该可以正常使用。此外,教程页面似乎会检查你使用的浏览器是否支持这些功能。如果是这样,你应该能够按照相当详细的教程进行操作。

http://www.html5rocks.com/en/tutorials/file/dndfiles/


3
感谢您的回答,但我想读取文件夹中的文件,也就是列出其中所有的文件,而不是读取文件的内容。我尝试创建了一个filesystemobject对象,但它也没有做任何事情。它似乎在这里不起作用。我只想列出给定文件夹中的所有文件。 - Killerwes

4

由于其基于微软,此解决方案仅适用于IE11或更早版本

<script type="text/javascript"> 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 

    function showFolderFileList(folderspec) {    
        var s = "";
        var f = fso.GetFolder(folderspec);

        // recurse subfolders
        var subfolders = new Enumerator(f.SubFolders);
        for(; !subfolders.atEnd(); subfolders.moveNext()) {
            s += ShowFolderFileList((subfolders.item()).path);
        }  

        // display all file path names.
        var fc = new Enumerator(f.files);
        for (; !fc.atEnd(); fc.moveNext()) {
            s += fc.item() + "<br>";
        }
        return s; 
    }

    function listFiles() {
        document.getElementById('files').innerHTML = showFolderFileList('C:');
    }
</script>

<input type='button' onclick='listFiles()' value='List Files' />
<div id="files" />

当我尝试这样做时,我收到了错误信息:“ActiveXObject未定义”。 - Addem
1
嗨,Addem,这个解决方案只适用于IE11或更早版本,因为它是基于MS的。你能确认你正在使用的是这个吗? - BelgoCanadian
@BelgoCanadian,您能否在您的回答中添加评论? - Shogunivar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接