我正在启动一个基于Electron的桌面应用程序,它将扩展现有的Web应用程序功能。
我对我能否从文件输入中获取绝对文件路径感兴趣。 HTML显示在BrowserView内部,该浏览器已禁用nodeIntegration并已启用contextIsolation。 在这种情况下,我的简单测试确实返回了有效的文件路径,尽管我的理解是不应该这样做。 也许我缺少什么?看起来像一个安全漏洞… 我可以在我的桌面应用程序中指望Electron在类似于以下代码中所示的情况下将返回有效的文件路径吗?
main.js
const { app, BrowserWindow, BrowserView } = require('electron');
let mainWindow;
const createWindow = () => {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
});
let view = new BrowserView({
webPreferences: {
nodeIntegration: false,
contextIsolation: true
}
})
mainWindow.setBrowserView(view)
view.setBounds({ x: 0, y: 0, width: 800, height: 600 })
view.webContents.loadURL('http://localhost:8000/index.html')
mainWindow.on('closed', () => {
mainWindow = null;
});
};
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (mainWindow === null) {
createWindow();
}
});
index.html
<html>
<script type="text/javascript">
function _on_file_change_() {
file_input = document.getElementById('file1');
console.log(file_input.files[0]);
}
</script>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<input type="file" id='file1' onchange="_on_file_change_(this.files)"/>
</body>
</html>