最近好久沒有寫過文章了,markdown感覺都不會用了,最近在寫Electron程序的時候遇到了一個問題,順便記錄一下吧,免得以后忘記了。
目前需要實現一個需求,點擊打開按鈕的時候需要打開文件瀏覽器,并且選中該文件。

Screenshot from 2017-07-06 18-19-36.png
在Electron中可以打開文件瀏覽器,官方Demo上也說明了:

Screenshot from 2017-07-06 18-21-44.png
但是,文檔中也說了,
If possible, select the file.
在三大平臺上測試,MacOS是可以打開文件瀏覽器并選中文件的,但是,Linux和Win上并不行,照Electron的更新速度,沒準兒后面的版本會實現這個功能也說不定。
既然官方API不行,那就得想辦法了,最終還是想到了一個,那就是在shell中調用系統(tǒng)的文件瀏覽器,并指定選中的文件,代碼如下:
在windows系統(tǒng)下
// for windows
let exec = require('child_process').exec;
exec('explorer.exe /select,"E:\\Demo\\test.txt"')
在linux系統(tǒng)下
// 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,這時直接調用系統(tǒng)的API來打開文件瀏覽器
require('electron').shell.showItemInFolder(filepath)
}
});
上面方法雖然有點茍且,但是可以解決這個問題,當然,還是希望Electron官方能夠盡快的實現這個功能!