电子 – 从菜单打开文件
我在我的电子应用程序中有一个button,显示“打开的文件”,当你点击它时打开的文件对话框出现,我可以select一个文件。
虽然,当我点击应用程序工具栏中的菜单项时,如何打开“打开文件对话框”框?
这是我在工具栏菜单子菜单中的标签:
label: 'Open', accelerator: 'CmdOrCtrl+O'
我想做一些事情:
label: 'Open', accelerator: 'CmdOrCtrl+O', role: 'open'
但是没有“开放”的angular色。
我怎样才能实现一个打开打开文件对话框的点击事件?
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}` })
我有两个button,一个不可见的input文件和可见的样式button。
<input type="file" id="fileId" style="display:none;" /> <button class="btn-lg btn-primary center-block" type="button" id="btnLoadFile">Load File</button>
在js中,我设置了样式化的button点击事件来触发input文件点击事件。
document.getElementById('btnLoadFile').addEventListener("click", function(){ document.getElementById('fileId').click(); });
然后,我有一个更改事件侦听器的input文件元素,即对文件做一些操作。
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); } });
希望这可以帮助。