Electron:使用 showOpenDialog 允许在 Linux 和 Win10 上选择文件,但为什么我不能在 MacOS 上选择文件?
Electron : using showOpenDialog allows files to be chosen on Linux & Win10 but why can't I choose file on MacOS?
我正在使用以下代码(在 Linux 和 Win10 上取得巨大成功)select 一个文件(并最终读取其内容)。
这是我的 main.js 并在 Linux 和 Win10 上弹出一个对话框,让我选择一个文件。
ipc.on('open-file-dialog', function (event) {
dialog.showOpenDialog({
properties: ['openFiles'],
defaultPath: specialFoldersPath,
}, function (files) {
if (files) event.sender.send('selected-file', files)
})
})
代码也会在 MacOS 上弹出文件打开对话框,但是,在我的 Mac Mini 运行 Mac[=36= 上] Mojave v10.14.6 我看到了以下内容:
请注意,我 可以 select 一个文件夹,但我不能 select 任何文件(它们显示为灰色并被禁用)。
我已经检查了 https://electronjs.org/docs/api/dialog 中的选项,但我没有看到需要为 MacOS 设置任何其他选项以允许文件 [=41] =]编辑。你知道为什么会这样吗?
注意:当我写这篇文章时,我注意到代码中有一些东西最终成为了解决方案。然而,既然 SO 说你可以 post 回答一个没有被问到的问题,因为这是一个有趣的问题,我决定 post 并回答。
盯着 documentation 看了一会儿后,我注意到了这个问题。
这是非常微妙的。这是文档中的重要部分:
糟糕!属性值为 openFile
而不是 openFiles.
红鲱鱼 是 在 [=] 上正常工作的事实(具有错误的 属性 值) 28=] 和 Win10.
固定代码如下:
ipc.on('open-file-dialog', function (event) {
dialog.showOpenDialog({
properties: ['openFile'],
defaultPath: specialFoldersPath,
}, function (files) {
if (files) event.sender.send('selected-file', files)
})
})
我正在使用以下代码(在 Linux 和 Win10 上取得巨大成功)select 一个文件(并最终读取其内容)。
这是我的 main.js 并在 Linux 和 Win10 上弹出一个对话框,让我选择一个文件。
ipc.on('open-file-dialog', function (event) {
dialog.showOpenDialog({
properties: ['openFiles'],
defaultPath: specialFoldersPath,
}, function (files) {
if (files) event.sender.send('selected-file', files)
})
})
代码也会在 MacOS 上弹出文件打开对话框,但是,在我的 Mac Mini 运行 Mac[=36= 上] Mojave v10.14.6 我看到了以下内容:
请注意,我 可以 select 一个文件夹,但我不能 select 任何文件(它们显示为灰色并被禁用)。
我已经检查了 https://electronjs.org/docs/api/dialog 中的选项,但我没有看到需要为 MacOS 设置任何其他选项以允许文件 [=41] =]编辑。你知道为什么会这样吗?
注意:当我写这篇文章时,我注意到代码中有一些东西最终成为了解决方案。然而,既然 SO 说你可以 post 回答一个没有被问到的问题,因为这是一个有趣的问题,我决定 post 并回答。
盯着 documentation 看了一会儿后,我注意到了这个问题。
这是非常微妙的。这是文档中的重要部分:
糟糕!属性值为 openFile
而不是 openFiles.
红鲱鱼 是 在 [=] 上正常工作的事实(具有错误的 属性 值) 28=] 和 Win10.
固定代码如下:
ipc.on('open-file-dialog', function (event) {
dialog.showOpenDialog({
properties: ['openFile'],
defaultPath: specialFoldersPath,
}, function (files) {
if (files) event.sender.send('selected-file', files)
})
})