【发布时间】:2019-01-10 08:10:20
【问题描述】:
为什么要在服务器端显示文件/文件夹对话框?
我正在构建一个打算在本地运行的项目(节点服务器端部分和浏览器中的客户端),我希望能够选择一个路径,将其添加到一些列表或 JSON 文件,然后在其中维护一些项目(webpack'ing、读取文件、通过 express 服务等)。
大多数情况下仅供个人使用,现在无论如何。
我要求通过 Node 而不是浏览器执行此操作的原因是,我可以以某种方式绕过现代浏览器中的安全隐患,即在选择文件夹时阻止在客户端显示完整的本地文件夹路径(来自<input> 标签)。
不仅如此,我也:
- 不需要上传任何文件,或者
- 不需要所选文件夹中包含的文件列表。
我只需要:
- 一种以用户友好的方式选择文件夹的方法,并且...
- 提交到服务器的路径
- (或者让服务器提示它,并将其存储在某处)。
以input标签为例:
<input id="open-project" type="file" />
这将产生这种类型的弹出窗口,非常适合挖掘文件夹、粘贴部分路径以快速导航到您需要的位置、转到您的快速访问/收藏夹等...
但它是用于选择文件,没有暴露路径,也没有任何有用的信息传递给服务器。
不过……
如果你切换到这个...
<input id="open-project" type="file" webkitdirectory directory />
您最终会看到这个可怕的对话框,它假定您要上传文件夹中包含的所有文件。
所以看起来<input> 并不是正确的选择。
也许有一个在服务器端执行此操作的现有模块?这样我就可以:
- 从客户端“调用”它,例如通过 AJAX
- 然后会在服务器上触发它
- 然后显示文件夹选择提示
或者……
制作一个...浏览器中的树形视图...与节点端来回通信以挖掘本地文件系统...
有什么建议吗?
【问题讨论】:
-
你终于解决了这个问题吗?....我也遇到了同样的情况....:)
-
@ÁngelBlanco 我最终使用 VueJS +“express”模块构建了一个基于浏览器的自定义文件浏览器。我定义了一个 POST 路由,它探索可用卷/驱动器的列表,还允许挖掘它们(一些系统目录除外)。一点点 HTML、CSS 和 JS 之后,很久以后......给我自己一个文件夹选择器!
-
@bigp - 你愿意分享那个基于浏览器的自定义文件浏览器吗?或者如果没有,你有什么灵感来创作它?这对我当前的项目有很大帮助。谢谢!
标签: javascript node.js windows path openfiledialog