创建以及下载二进制文件

29 阅读1分钟
<!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>创建及下载二进制文件</title>
</head>

<body>
    <textarea id="text" placeholder="请输入一些文字">
    </textarea>
    <br />
    <button id="btndownload" onclick="Blob_test()">创建及下载二进制文件</button>
    <output id="result"></output>
    <script>
        let data = {}
        let text = document.getElementById("text")
        text.focus()
        Object.defineProperty(data, "text", {
            set: function (val) {
                text.value = val
                this.value = val
            },
            get: function () {
                return this.value
            }
        })
        text.addEventListener('change', (e) => {
            data.text = e.target.value
        })
        function Blob_test() {
            let blob
            let result = document.getElementById("result")
            if (!window.Blob) {
                result.innerHTML = "您的电脑不支持Blob对象"
            } else {
                blob = new Blob([data.text])
                console.log(blob)
            }
            if (window.URL) {
                result.innerHTML = '<a download href="' + window.URL.createObjectURL(blob) + '"target="_blank">文件下载</a>'
            }
        }
        function autoHeight(el) {
            let setStyle = (el, auto = false) => {
                if (auto) el.style.height = 'auto';
                el.style.height = el.scrollHeight + 'px';
            }
            el.addEventListener('input',()=>{
                setStyle(el,true);
            }, false);
            setStyle(el)
        }
        autoHeight(text)
    </script>
</body>
</html>