webUtils
webUtils 在预加载脚本或渲染进程里,把网页的 File 对象换成文件系统路径。Electron 32 移除了 File.path,拖拽和 <input type="file"> 要改用这个模块。
文档:https://www.electronjs.org/docs/latest/api/web-utils
getPathForFile
const { webUtils, contextBridge } = require('electron');
contextBridge.exposeInMainWorld('api', {
pathForFile: (file) => webUtils.getPathForFile(file),
});
页面把拖进来的 File 传给 pathForFile,得到本地路径。文件内容仍可以用 file.text() 或 file.arrayBuffer() 读取,那不需要路径。
路径一旦到了页面里,就可能被改掉再传回主进程。主进程打开文件前,确认路径位于允许的目录,或者根本只接受本次对话框返回的路径。
webUtils 不提供任意路径的读取能力,它只解析浏览器已经拿到的那个 File。