为了账号安全,请及时绑定邮箱和手机立即绑定

Electron JS - 获取所选目录的路径

Electron JS - 获取所选目录的路径

慕雪6442864 2023-06-15 16:00:19
我在编程世界相当陌生。我正在制作一个应用程序,应该可以在其中选择一个目录,用于保存一些生成的文件。我正在使用 ipc,看起来有些代码可以工作,但看起来我无法让 mainIpc 将路径发送回渲染器。希望蜂巢能帮上忙,先谢谢了!渲染器:const electron = require("electron");const ipc = require("electron").ipcRenderer;    createBtn.addEventListener("click", (event) => {ipc.send("path:get");});ipc.on("path:selected", function (path) {console.log("Full path: ", path);});主要的const ipc = require("electron").ipcMain;const os = require("os");const { dialog } = require("electron");ipc.on("path:get", function (event) {if (os.platform() === "linux" || os.platform() === "win32") {    dialog.showOpenDialog(        {            properties: ["openFile"],        },        function (files) {            if (files) win.webContents.send("path:selected", files[0]);            console.log("SENT");        }    );} else {    dialog.showOpenDialog(        {            properties: ["openFile", "openDirectory"],        },        function (files) {            if (files) win.webContents.send("path:selected", files[0]);            console.log("SENT");        }    );}});
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

我在某种帮助下弄明白了。因此,如果有人需要相同的程序,我会尝试解释我做了什么。


所以,总的来说,我不得不添加一个 then,因为 showDialog 返回一个承诺


if (os.platform() === "linux" || os.platform() === "win32") {

    dialog

        .showOpenDialog({

            properties: ["openFile", "openDirectory"],

        })

        .then((result) => {

            if (result) win.webContents.send("path:selected", result.filePaths);

        })

        .catch((err) => {

            console.log(err);

        });

} else {

    dialog

        .showOpenDialog({

            properties: ["openFile", "openDirectory"],

        })

        .then((result) => {

            console.log(result.filePaths);

            if (result) win.webContents.send("path:selected", result.filePaths);

        })

        .catch((err) => {

            console.log(err);

        });

}

});


这将发回一个路径为 [0] 的数组


在渲染器中,我忘记将事件添加为参数。


ipc.on("path:selected", (event, path) => {

  chosenPath = path;

  console.log("Full path: ", chosenPath[0]);

});


查看完整回答
反对 回复 2023-06-15
  • 1 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信