2016-10-09 7 views
2

У меня есть кнопка в моем электронном приложении, в которой говорится «открытый файл», и когда вы нажимаете на нее, открывается диалоговое окно открытого файла, и я могу выбрать файл.Электрон - Открыть файл из меню

Хотя, как я могу открыть диалоговое окно «Открыть файл», когда я нажимаю элемент меню на панели инструментов приложений?

Это мой ярлык в подменю для меню панели инструментов:

label: 'Open', 
accelerator: 'CmdOrCtrl+O' 

Я хочу сделать что-то вроде:

label: 'Open', 
accelerator: 'CmdOrCtrl+O', 
role: 'open' 

Но нет такой роли, как «открытая».

Как я могу реализовать событие on click, открывающее диалоговое окно открытого файла?

Main.js раздел открыть файл:

const ipc = require('electron').ipcMain 
const dialog = require('electron').dialog 

ipc.on('open-file-dialog', function (event) { 
    dialog.showOpenDialog({ 
    properties: ['openFile', 'openDirectory'] 
    }, function (files) { 
    if (files) event.sender.send('selected-file', files) 
    }) 
}) 

index.js:

const ipc = require('electron').ipcRenderer 
const selectDirBtn = document.getElementById('open') 

selectDirBtn.addEventListener('click', function (event) { 
    ipc.send('open-file-dialog') 
}) 

ipc.on('selected-file', function (event, path) { 
    document.getElementById('selected-file').innerHTML = `► ${path}` 
    document.getElementById('selected-file2').innerHTML = `${path}` 
}) 

ответ

1

У меня был две пуговицы, невидимый входной файл и видимая кнопка стилизации.

<input type="file" id="fileId" style="display:none;" /> 
<button class="btn-lg btn-primary center-block" type="button" 
    id="btnLoadFile">Load File</button> 

В js я установил стиль нажатия кнопки, чтобы вызвать событие щелчка входного файла.

document.getElementById('btnLoadFile').addEventListener("click", function(){ 
    document.getElementById('fileId').click(); 
}); 

Затем у меня есть прослушиватель событий изменений для элемента входного файла, который выполняет некоторую операцию с файлом.

document.getElementById('fileId').addEventListener('change', function(e){ 
    //use the file here 
    var files = e.target.files; 
    var f = files[0]; { 
     var reader = new FileReader(); 
     var name = f.name; 
     reader.onload = function (e) { 
      console.log(e.target.result); 
     }; 
     reader.readAsBinaryString(f); 
    } 
}); 

Надеюсь, что это поможет.

Смежные вопросы