const { app, BrowserWindow, BrowserView } = require("electron");
function createWindow() {
const win = new BrowserWindow({
width: 1200,
height: 900,
webPreferences: {
nodeIntegration: true,
},
});
win.removeMenu();
win.setMenu(null);
win.loadURL("http://localhost:3000");
// win.webContents.openDevTools();
}
function createNewView() {
const win = new BrowserWindow({ width: 500, height: 500 });
const view = new BrowserView();
win.setBrowserView(view);
view.setBounds({ x: 0, y: 0, width: 500, height: 500 });
view.webContents.loadURL(
"file://" + __dirname + "/BrowserViewPages/UploadFilePage.html"
);
}
app.whenReady().then(createWindow);
app.whenReady().then(createNewView);
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
createNewView();
}
});
const { ipcMain } = require("electron");
const { dialog } = require("electron");
ipcMain.on("open-file-dialog", function (event) {
const parentWindow =
process.platform === "darwin" ? null : BrowserWindow.getFocusedWindow();
dialog.showOpenDialog(
parentWindow,
{
properties: ["openFile", "openDirectory"],
},
function (files) {
if (files) event.sender.send("selected-file", files);
}
);
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Upload File</title>
</head>
<body>
<button id="select-file">Open File</buttton>
<div id="selected-file"></div>
<script>
const {ipcRenderer} = require("electron");
const selectDirBtn = document.getElementById("select-file");
selectDirBtn.addEventListener("click", function (event) {
ipcRenderer.send("open-file-dialog");
});
ipcRenderer.on("selected-file", function (event, path) {
document.getElementById("selected-file").innerHTML = `You selected: ${path}`;
});
</script>
</body>
</html>