JavaScript儲存文字資料示例

關愛單身狗發表於2016-12-13

JavaScript儲存文字資料示例,當然不僅僅是文字其他型別的也是可以到

首先上程式碼


<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script>
            var fl;
            function g(f) {
                fl = null;
                if(f) {
                    document.getElementById("fname").innerText = f.name;
                    document.getElementById("fsize").innerText = f.size;
                    fl = f;
                }
            }
            function dataURLSave1() {
                if(fl) {
                    var reader = new FileReader();
                    reader.onload = function(e) {
                        ck(e.target.result);
                    };
                    reader.readAsDataURL(fl);
                }
            }
            function dataURLSave2() {
                if(fl) {
                    var reader = new FileReader();
                    reader.onload = function(e) {
                        ck(`data:text/plain;charset=utf-8,` + e.target.result);
                    };
                    reader.readAsText(fl);

                }
            }
            function objectURLSave() {
                if(fl) {
                    ck(URL.createObjectURL(fl));
                    setTimeout(function(){
                        URL.revokeObjectURL(fl);//用URL.revokeObjectURL()來釋放這個object URL
                    },200);
                }
            }
            function ck(href) {
                document.getElementById("hf").href = href;
                document.getElementById("hf").download = fl.name;
                document.getElementById("hf").click();
            }
        </script>
    </head>

    <body>
        <input type="file" onchange="g(this.files[0])">
        <div>檔名:<span id="fname"></span></div>
        <div>大小:<span id="fsize"></span></div>
        <button onclick="dataURLSave1()">儲存(dataURL方式1)</button>
        <button onclick="dataURLSave2()">儲存(dataURL方式2)</button>
        <button onclick="objectURLSave()">儲存(objectURLSave方式)</button>
        <a id="hf" href="" download="download"></a>

    </body>

</html>

實現分類

一般情況下使用瀏覽器自帶功能實現匯出類似與文字檔案的方式簡單可以分為兩種
1.DataURL
2.ObjectURL

原理

其實原理跟平時下載是一樣的,只不過把下載的連線替換成了以上兩種URL

比較

DataURL方式

在示例程式碼中DataURL方式1是將文字檔案直接讀取成DataURL,DataURL方式2是通過讀取文字內容然後將內容與(data:text/plain;charset=utf-8,…)進行拼接
DataURL方式1和DataURL方式2對檔案文字編碼有一定要求,容易出現亂碼

ObjectURL方式

ObjectURL是將記憶體中的物件轉為ObjectURL,相比DataURL的話ObjectURL比較不容易出現亂碼,但DataURL比較固定ObjectURL比較不固定


相關文章