Электрон: использование showOpenDialog позволяет выбирать файлы в Linux и Win10, но почему я не могу выбрать файл в MacOS? - PullRequest
0 голосов
/ 30 октября 2019

Я использую следующий код (с большим успехом в Linux и Win10), чтобы выбрать файл (и в конечном итоге прочитать его содержимое).

Это в моем 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 под управлением MacOS Mojave v10.14.6 я вижу следующее:

Mac open file dialog

Обратите внимание, что я могу выбрать папку, но не могу выбрать какие-либо файлы (они выделены серым цветом и отключены).

Я рассмотрел параметры в https://electronjs.org/docs/api/dialog, но не вижу никаких дополнительных параметров, которые необходимо установить для MacOS, чтобы разрешить выбор файлов. Вы знаете, почему это происходит?

Примечание : Когда я писал это, я заметил кое-что с кодом, который оказался решением. Однако, поскольку SO говорит, что вы можете опубликовать ответ на вопрос, который не был задан, и поскольку это интересная проблема, я решил опубликовать и ответить.

1 Ответ

0 голосов
/ 30 октября 2019

После долгого просмотра документации я заметил проблему. Это было очень тонко. Вот важная часть из документации: docs say...

Упс! Значение свойства openFile not openFile s .

красная сельдь означала, что эта работала правильно (с неправильнойзначение свойства) в Linux и Win10.

Вот фиксированный код:

ipc.on('open-file-dialog', function (event) {
  dialog.showOpenDialog({
    properties: ['openFile'],
    defaultPath: specialFoldersPath,

  }, function (files) {
    if (files) event.sender.send('selected-file', files)
  })
})
...