如何使所选目录的路径进入渲染器进程



我想在变量中存储使用dialog.showOpenDialog选择的本地目录路径。我尝试了每个教程和堆栈答案,但没有任何运气。最好的部分是,即使是electron-api-demos解决方案也不起作用(我在这里使用的是一个)。所以,对话框打开,我可以选择一个文件夹或一个文件,但是没有任何东西被发送回渲染进程。

我在这里测试这个打开文件,但也没有结果。我使用jquery btw和电子v12。下面是我的代码:

渲染器的过程:

$('.js_select_folder').on('click', (e) =>{
ipcRenderer.send('open-folder')
e.preventDefault();
})

ipcRenderer.on('selected-folder', (event, path) => {
console.log('wtf',path)
$('#info').text('Result :'+path)   
})

主要过程:

ipcMain.on('open-folder',  (event) => {
dialog.showOpenDialog({ properties:['openFile']}, (files) => {
if(files){
console.log(files)
event.reply('selected-folder', files)
}
})
})

任何地方都没有console.log(files)的踪迹。你知道我做错了什么吗?

我明白了:

渲染器的过程:

$('.js_test').on('click', (e)=>{
e.preventDefault();
ipcRenderer.send('open-folder')
})
ipcRenderer.on('sel-dir', (event, path) => {
const message = `This app is located at: ${path}`
$('#info').text(message)   
})

主要过程:

ipcMain.on('open-folder', (event, arg) => {
dialog.showOpenDialog({properties: ['openDirectory']}).then(result=>{
event.sender.send('sel-dir', result.filePaths)
})
})

正如你所看到的,它实际上是超级简单的,但我花了两天时间才弄明白。结果是,我得到路径(或任何数据)后,选择dir或file返回到渲染器。

问候,Mac .

最新更新