gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:38:38 37 4
gpt4 key购买 nike

我在编程世界中还很新。我正在制作一个应该可以选择目录的应用程序,并在其中保存一些生成的文件。
我正在使用ipc,似乎某些代码可以工作,但似乎无法获取mainIpc将路径发送回渲染器。
希望 hive 能为您提供帮助,在此先感谢!
渲染器:

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");
}
);
}
});
编辑:添加设置
设置
const { app, BrowserWindow } = require("electron");

const ipc = require("electron").ipcMain;
const os = require("os");
const { dialog } = require("electron");

try {
require("electron-reloader")(module);
} catch (_) {}

let win;

function createWindow() {
win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
});

win.loadFile("./src/index.html");
}

app.whenReady().then(createWindow);

app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
});

app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});




最佳答案

我在某种帮助下找到了答案。
因此,如果有人需要相同的步骤,我将尽力解释我所要做的事情。
所以,在主要情况下,我必须添加一个then,因为showDialog返回了promise

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]);
});

关于javascript - Electron JS-获取所选目录的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65002896/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com