美文网首页
浏览器直接读取文件夹和文件

浏览器直接读取文件夹和文件

作者: 姜治宇 | 来源:发表于2023-05-21 10:16 被阅读0次

利用google提供的showOpenFilePicker()和showDirectoryPicker(),我们可以实现直接读取文件夹和文件,十分方便。

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="getdir">选择文件夹</button>
    <button id="getjson">读取json文件</button>
</body>

</html>
<script type="module">

    const files = [];


    document.getElementById('getjson').addEventListener('click', () => {

        window.showOpenFilePicker().then((fileHandles) => {
            const [fh] = fileHandles;
            fh.getFile().then(file => {

                console.log("file:", file);
                // 读取文本内容
                const reader = new FileReader();
                reader.onload = (e) => {

                    let configJsonObj = JSON.parse(e.target.result);
                    console.log('读取json文件', configJsonObj);
                };
                reader.readAsText(file);
            });
        });


    });
    document.getElementById('getdir').addEventListener('click', () => {
        window.showDirectoryPicker({

            mode: "read",

            startIn: "desktop",
        })
            .then(async (dirHandle) => {
                const items = dirHandle.entries();
                findFile(items);//获取所有文件
            })
            .catch((err) => {
                console.error("打开目录失败: ", err);
            });
    });

    async function findFile(arr) { //递归获取所有文件
        for await (const [key, value] of arr) {
            if (value instanceof FileSystemDirectoryHandle) {

                findFile(value.entries());

            } else if (value instanceof FileSystemHandle) {
                console.log('获取文件', await value.getFile());

                const file = await value.getFile();
                files.push(file);


            }

        }
    }

</script>

相关文章

网友评论

      本文标题:浏览器直接读取文件夹和文件

      本文链接:https://www.haomeiwen.com/subject/vfuasdtx.html