最近好久没有写过文章了,markdown感觉都不会用了,最近在写Electron程序的时候遇到了一个问题,顺便记录一下吧,免得以后忘记了。
目前需要实现一个需求,点击打开按钮的时候需要打开文件浏览器,并且选中该文件。
在Electron中可以打开文件浏览器,官方Demo上也说明了:
但是,文档中也说了,
If possible, select the file.
在三大平台上测试,MacOS是可以打开文件浏览器并选中文件的,但是,Linux和Win上并不行,照Electron的更新速度,没准儿后面的版本会实现这个功能也说不定。
既然官方API不行,那就得想办法了,最终还是想到了一个,那就是在shell中调用系统的文件浏览器,并指定选中的文件,代码如下:
在windows系统下
// for windows
let exec = require('child_process').exec;
exec('explorer.exe /select,"E:\\Demo\\test.txt"')
在linux系统下
// for linux (Ubuntu)
let exec = require('child_process').exec;
let filepath = '/home/xxx/Downloads/test.txt'
let cmd = 'nautilus -s ' + filepath
exec(cmd, function (error, stdout, stderr) {
if (error) {
// 有可能没有安装nautilus,这时直接调用系统的API来打开文件浏览器
require('electron').shell.showItemInFolder(filepath)
}
});
上面方法虽然有点苟且,但是可以解决这个问题,当然,还是希望Electron官方能够尽快的实现这个功能!