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

时间:2015-04-17 16:52:00

标签: javascript node.js node-webkit

我在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 />

2 个答案:

答案 0 :(得分:1)

我不确定您是否正在使用您在此处粘贴的代码,但在用户实际选择某些内容时似乎没有做任何事情 。如果您使用输入然后调用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对我有用,所以试一试,看看你是否正在寻找它。

答案 1 :(得分:1)

我误解了nwdirectory是如何工作的。 NW doc声明“nwdirectory有点类似于webkitdirectory,因为它允许用户选择一个目录,但是它不会枚举目录下的所有文件,而是直接返回目录的路径

要返回包含路径的文件列表,我只需要在multiple中使用input,就像这样。

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

我还发现了一个来自How to find out if reading dir is completed的工作代码,用于递归地读取和返回带有拉取路径的目录和文件。再次感谢两者。