JSON文件压缩处理 工具


<!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><script id="__bs_script__">//<![CDATA[
    document.write("<script async src='/browser-sync/browser-sync-client.js?v=2.26.7'><\/script>".replace("HOST", location.hostname));
//]]></script>

    <button onclick="addajax()">ajax请求</button>
    <input type="file" value="文件预览" onchange="change(this)" id="upload">
    <button onclick="createFile()">创建文件</button>
    <script>

        // ajax 请求 本地JSON文件
        function ajax(callback) {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    var myObj = JSON.parse(this.responseText);
                    if (callback && typeof callback == "function") {
                        callback(myObj);
                    }
                    console.log(myObj);
                }
            };
            xmlhttp.open("GET", "./1.json", true);
            xmlhttp.send();
        }

        function addajax() {
            // json 文件压缩
            ajax((res) => {
                console.log(res, '=========res')
                let file = JSON.stringify(res)
                console.log(file, '===file')

                var a = document.createElement('a')
                var blob = new Blob([file], { type: 'text/plain' })
                var url = window.URL.createObjectURL(blob)
                a.href = url
                a.download = "000.json"
                a.click()
                window.URL.revokeObjectURL(url)
            })
        }

        // 文件上传(系统)
        function change(e) {
            console.log(e.files, '====change')
            let file = e.files[0]
            // var aafile = new File([file], "820100.json", { type: 'application/json' });
            // console.log(aafile);

            const reader = new FileReader(); //这是核心,读取操作就是由它完成.
            // reader.readAsDataURL(file);//读取文件的内容,也可以读取文件的URL
            // reader.onload = function (e) {
            //     // 转换完成,创建一个a标签用于下载
            //     var a = document.createElement("a");
            //     a.download = file.name;
            //     a.href = e.target.result;
            //     document.body.append(a); // 修复firefox中无法触发click
            //     a.click();
            //     document.body.removeChild(a)
            // }

            function Trim(str, is_global = 'i') {
                var result;
                result = str.replace(/(^\s+)|(\s+$)/g, "");
                if (is_global.toLowerCase() == "g")
                    result = result.replace(/\s/g, "");
                return result;
            }

            reader.readAsText(file); // 转换为base64,可以直接放入a表情href
            reader.onload = function (e) {
                var a = document.createElement('a')
                var blob = new Blob([Trim(e.target.result, 'g')], { type: 'text/plain' })
                var url = window.URL.createObjectURL(blob)
                a.href = url
                a.download = file.name
                a.click()
                window.URL.revokeObjectURL(url)
            }

        }

        // 创建文件(手动)
        function createFile() {
            var file = new File(['foo', 'bar'], 'foobar.txt');

            console.log('size=' + file.size);
            console.log('type=' + file.type);
            console.log('name=' + file.name);
            var reader = new FileReader();
            reader.onload = function (event) {
                console.log(JSON.stringify(reader.result), '====')
            };
            reader.readAsText(file);

            var testEndings = function (string, endings) {
                var file = new File([string], {
                    type: 'plain/text',
                    endings: endings
                });
                var reader = new FileReader();
                reader.onload = function (event) {
                    console.log(endings + ' of ' + JSON.stringify(string) +
                        ' => ' + JSON.stringify(reader.result));
                };
                reader.readAsText(file);
            };

            testEndings('foo\nbar', 'native');
            testEndings('foo\r\nbar', 'native');
            testEndings('foo\nbar', 'transparent');
            testEndings('foo\r\nbar', 'transparent');



        }


        // FileReader.error:读取文件时产生的错误对象
        // FileReader.readyState:整数,表示读取文件时的当前状态。一共有三种可能的状态,0表示尚未加载任何数据,1表示数据正在加载,2表示加载完成。
        // FileReader.result:读取完成后的文件内容,有可能是字符串,也可能是一个 ArrayBuffer 实例。
        // FileReader.onabort:abort事件(用户终止读取操作)的监听函数。
        // FileReader.onerror:error事件(读取错误)的监听函数。
        // FileReader.onload:load事件(读取操作完成)的监听函数,通常在这个函数里面使用result属性,拿到文件内容。
        // FileReader.onloadstart:loadstart事件(读取操作开始)的监听函数。
        // FileReader.onloadend:loadend事件(读取操作结束)的监听函数。
        // FileReader.onprogress:progress事件(读取操作进行中)的监听函数。


        // FileReader.abort():终止读取操作,readyState属性将变成2。
        // FileReader.readAsArrayBuffer():以 ArrayBuffer 的格式读取文件,读取完成后result属性将返回一个 ArrayBuffer 实例。
        // FileReader.readAsBinaryString():读取完成后,result属性将返回原始的二进制字符串。
        // FileReader.readAsDataURL():读取完成后,result属性将返回一个 Data URL 格式(Base64 编码)的字符串,代表文件内容。对于图片文件,这个字符串可以用于 < img > 元素的src属性。
        // 注意,这个字符串不能直接进行 Base64 解码,必须把前缀data:*/*;base64,从字符串里删除以后,再进行解码。
        // FileReader.readAsText():读取完成后,result属性将返回文件内容的文本字符串。该方法的第一个参数是代表文件的 Blob 实例,第二个参数是可选的,表示文本编码,默认为 UTF-8。

        // 参考:https://wangdoc.com/javascript/bom/file.html

    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web修理工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值