node-webkit 从目录中读取文件的完整路径

node-webkit read full path of files from directory

我在 NW.js 中尝试了以下代码以读取给定文件夹下具有完整路径的所有文件,但无法正常工作。怎么了?谢谢

function chooseFiles() {
    var files = $('#fileDialog')[0].files;
    for (var i = 0; i < files.length; ++i) {
        console.log(files[i].path);
    }
}
chooseFiles('#fileDialog');
<input type="file" id="fileDialog" nwdirectory />

我不确定您使用的代码是否与您粘贴在此处的代码完全相同,但它似乎没有做任何事情当用户实际选择某些内容时。如果您要使用输入 然后 调用 chooseFiles() 选择一些东西,它应该可以工作。至少在我快速设置的 nw.js 应用程序中是这样。

如果您希望文件在用户完成选择时显示在 console.log() 中,我认为您应该可以使用以下代码来实现:

<html>
<head>
    <script src="jquery.js"></script>
    <script>
    $(function () {
        $("#fileDialog").on("change", function () {
            var files = $(this)[0].files;
            for (var i = 0; i < files.length; ++i) {
            console.log(files[i].path);
            }
        });
    });
    </script>
</head>
<body>
    <input type="file" id="fileDialog" nwdirectory />
</body>
</html>

如果您希望在用户使用文件对话框选择目录时立即记录文件,我认为 on("change") 可能正是您要查找的内容。它使用 nw.js v0.12 对我有用,所以试一试,看看这是否是您要找的。

我误解了 nwdirectory 的工作原理。 NW 文档指出 "nwdirectory is a bit similar to webkitdirectory because it let user select a directory too, but it will not enumerate all files under the directory but directly returns the path of directory"

到 return 文件列表我只需要像这样在 input 中使用 multiple

<input type="file" id="fileDialog" multiple />

我还从 How to find out if reading dir is completed 中找到了一个工作代码,用于读取和 return 目录和文件,并递归地提取路径。再次感谢两位。