簡體   English   中英

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 上彈出文件打開對話框,但是,在運行 MacOS Mojave v10.14.6 的 Mac Mini 上,我看到以下內容:

Mac 打開文件對話框

請注意,我可以select 一個文件夾,但我不能 select 任何文件(它們是灰色和禁用的)。

我已經檢查了https://electronjs.org/docs/api/dialog中的選項,但我沒有看到需要為 MacOS 設置任何其他選項以允許選擇文件。 你知道為什么會這樣嗎?

注意:當我寫這篇文章時,我注意到代碼中的一些東西最終成為了解決方案。 但是,由於 SO 說您可以發布一個尚未被問到的問題的答案,並且因為這是一個有趣的問題,所以我決定發布並回答。

在盯着文檔很長一段時間后,我注意到了這個問題。 這是非常微妙的。 這是文檔中的重要部分: 醫生說……

哎呀! 屬性值是openFile而不是 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)
  })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM