【问题标题】:node-webkit read full path of files from directorynode-webkit 从目录中读取文件的完整路径
【发布时间】:2015-04-17 16:52:00
【问题描述】:

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

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

【问题讨论】:

  • 凯文,你能澄清什么是“不工作”吗?这是模糊的。你看到什么输出?什么错误信息?
  • @jmort253,感谢您的回复。当我选择文件夹(选择文件 -> -> 确定)时,它会在输入对话框中显示文件夹名称,但不会在控制台中打印出此文件夹中的文件。我想获取这些文件的所有完整路径。谢谢。
  • stackoverflow.com/a/5827895/552792 这有帮助吗?您可能需要使用其他方法读取目录中的文件。
  • @jmort253,感谢您的链接。它在 node.js 的 app.js 中完美运行,但对于我的 index.html 中的 NW.js,我有一个脚本标签可以执行相同的操作,但无法成功运行。对于 NW.js,由于Uncaught ReferenceError: path is not defined,我必须首先运行npm install fs,但仍然不行。根据link,它应该可以工作,但不能。任何想法如何在 NW.js 中使用这个模块?谢谢。
  • 另外,请查看link。我的印象是 NW.js 有一个内置的模块/fn?

标签: javascript node.js node-webkit


【解决方案1】:

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

【讨论】:

  • 您好 toast,感谢您抽出宝贵时间。我也在使用相同的 nw.js 版本。我用新的 nw.js v0.12 尝试了你的代码,但仍然无法打印文件。在控制台中,它打印的唯一行是选定的文件夹路径。我还尝试了两个 diff jquery 版本(v1.9.1 和 v2.1.3)。仍然不确定为什么它对我不起作用。如果这有什么不同,我在 Win7 上。谢谢。
  • @KevinH。如果您使用webkitdirectory 而不是nwdirectory,会有什么不同吗?
  • webkitdirectory 返回目录路径,如nwdirectory。我会接受你的第一个答案,因为它引导我走向正确的方向。再次感谢伙计!
【解决方案2】:

我误解了 nwdirectory 的工作原理。 NW doc指出“nwdirectory有点类似于webkitdirectory,因为它也让用户选择一个目录,但它不会枚举目录下的所有文件,而是直接返回目录的路径

要返回带有路径的文件列表,我只需要像这样在input 中使用multiple

&lt;input type="file" id="fileDialog" multiple /&gt;

我还从How to find out if reading dir is completed 中找到了一个工作代码,可以递归地读取和返回具有拉取路径的目录和文件。再次感谢两位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2010-10-14
    • 2014-02-09
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多