electron(选择文件,保存文件,弹框)

7,020 阅读5分钟

electron第二弹

选择文件对话框:dialog.showOpenDialog()

  • 有两个参数,一个设置基本属性,另外一个是回调函数,如果一部可以使用then来实现

小例子;

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Electron</title>
</head>

<body>
    <button id="openBtn">打开文件</button>
    <img id="images" style="width: 100%;" />
    <script>
        const {
            dialog
        } = require('electron').remote;
        var openBtn = document.getElementById('openBtn')
        openBtn.onclick = function() {
            dialog.showOpenDialog({
                title'请选择你喜欢的照片',
                //默认路径,默认选择的文件
                defaultPath'default.jpg',
                //过滤文件后缀
                filters: [{
                    name'img',
                    extensions: ['jpg''png']
                }],
                //打开按钮
                buttonLabel'打开按钮文字',
                //回调结果渲染到img标签上
            }).then(result => {
                let image = document.getElementById('images')
                image.setAttribute("src", result.filePath[0])
            }).catch(err => {
                console.log(err)
            })
        }
    </script>
</body>

</html>

小结:主要就是用dialog里的showOpenDialog可以触发选择文件事,然后里面的默认文件,过滤文件后缀,打开按钮自定义,回调渲染,可以理解一下

保存文件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Electron</title>
</head>

<body>
    <button id="openBtn">打开文件</button>
    <button id="saveBtn">保存文件</button>
    <img id="images" style="width: 100%;" />
    <script>
        const fs = require('fs')
        var saveBtn = document.getElementById('saveBtn')
        saveBtn.onclick = function() {
            dialog.showSaveDialog({
                title'保存文件'
            }).then(result => {
                console.log(result)
                fs.writeFileSync(result.filePath'baocunde.js')
            }).catch(err => {
                console.log(err)
            })
        }
    </script>
</body>
</html>

小结:首先引入node.js的fs,然后调用dialog.showSaveDialog,选择文件,回调会给你一个文件名,然后使用fs.writeFileSync(文件名称,文件内容)

消息对话框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Electron</title>
</head>
<body>
    <button id="messageBtn">保存文件</button>
    <img id="images" style="width: 100%;" />
    <script>
        const {
            dialog
        } = require('electron').remote;
        const fs = require('fs')
        var messageBtn = document.getElementById('messageBtn')
        messageBtn.onclick = function() {
            dialog.showMessageBox({
                title'选择一个按钮',
                type'warning',
                message'去吃饭吗',
                buttons: ['去''不去']
            }).then(result => {
                if (result == 0) {
                    console.log('用户点击了去')
                }
            }).catch(err => {
                console.log(err)
            })
        }
    </script>
</body>
</html>

小结:使用dialog.showMessageBox,可以弹出一个选择框,buttons是按钮选项,为一个数组,点击返回的是数组中的下标,然后在回调中做判断