如何使用电子获取文件夹路径

Sur*_*iya 14 javascript node.js angularjs electron

我对电子很新.任何人都可以建议我如何使用电子获得本地文件夹的相对路径?JavaScript没有这种能力.

在此输入图像描述

我有一个选择文件按钮(请参阅快照),所以我的问题是,当我选择一个文件夹并单击打开按钮时,它应该返回一个完整的目录路径.

Tea*_*eak 33

正如@phuongle在你想要使用的评论中指出的那样showOpenDialog().像这样的东西:

var remote = require('remote');
var dialog = remote.require('electron').dialog;

var path = dialog.showOpenDialog({
    properties: ['openDirectory']
});
Run Code Online (Sandbox Code Playgroud)

更新:以上版本不适用于当前版本,必须使用ES6导入..

const {dialog} = require('electron').remote;
Run Code Online (Sandbox Code Playgroud)


Yai*_*evy 15

遵循官方IPC 教程对我有用

主要流程:

import {dialog, ipcMain} from 'electron'
function createWindow () {
  mainWindow = new BrowserWindow({/*Your electron window boilerplate*/})
  ipcMain.handle('dialog:openDirectory', async () => {
    const { canceled, filePaths } = await dialog.showOpenDialog(mainWindow, {
      properties: ['openDirectory']
    })
    if (canceled) {
      return
    } else {
      return filePaths[0]
    }
  })
}
Run Code Online (Sandbox Code Playgroud)

预加载脚本:

import {contextBridge, ipcRenderer} from 'electron'

contextBridge.exposeInMainWorld('myAPI', {
  selectFolder: () => ipcRenderer.invoke('dialog:openDirectory')
})
Run Code Online (Sandbox Code Playgroud)

现在,您可以从应用程序代码中调用 selectFolder 方法并获取用户输入。

window.myAPI.selectFolder().then(result=>{/* Do something with the folder path*/})
Run Code Online (Sandbox Code Playgroud)