代码之家  ›  专栏  ›  技术社区  ›  KiYugadgeter

Electron dialog.showOpenDialog不尊重Linux上的筛选器

  •  0
  • KiYugadgeter  · 技术社区  · 1 年前

    我想在Electron上使用showOpenDialog选择文件时进行筛选。
    我想让用户只能选择Markdown(md)。
    但它不受尊重。
    所以现在用户可以选择所有类型的文件。
    我该怎么修?

    我的环境是:

    ArchLinux
    侏儒46.2
    电子31.0.1

    const { app, BrowserWindow, dialog, ipcMain } = require("electron");
    const path = require("node:path");
    const createWindow = () => {
        const win = new BrowserWindow({
            width: 800,
            height: 600,
            webPreferences: {
                preload: path.join(__dirname, 'preload.js')
            }
        })
        win.loadFile(path.join(__dirname, "index.html"));
        return win;
    }
    app.whenReady().then(() => {
        const win = createWindow()
        ipcMain.handle('FileChooser', async () => {
            const res = await dialog.showOpenDialog(win, { properties: ["openFile"], title: "Select a Markdown", filters: { name: "Markdown", extensions: ["md"] } })
            return res;
        })
    })
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   CherryDT Ravi Shankar    1 年前

    这个 filters 选项采用 滤波器阵列 。您不是在传递数组,而是在传递单个筛选器对象。

    包裹对象 [] 所以你传递一个数组,里面有一个过滤器对象。