异步文件流读取示例

简介: 前提-服务器上的文件是允许跨域的或是文件与运行页面是在同一域名下的,否则会报出以下错误:跨域错误演示请求主要函数:function fetchAB(url, cb) { var xhr = new XMLHttpRequest; xhr.

前提-服务器上的文件是允许跨域的或是文件与运行页面是在同一域名下的,否则会报出以下错误:

img_d93e920c7025845416e6b4bee5290bdd.jpe
跨域错误

img_6aefa8623287ac3310248cbb2a6a26ce.gif
演示

请求主要函数:

function fetchAB(url, cb) {
            var xhr = new XMLHttpRequest;
            xhr.open('get', url, true);
            xhr.responseType = 'arraybuffer';
            xhr.onload = cb;
            xhr.send();
        }; 

结合js-xlsx读取xlsx文件在线示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
    <script>
        function fetchAB(url, cb) {
            var xhr = new XMLHttpRequest;
            xhr.open('get', url, true);
            xhr.responseType = 'arraybuffer';
            xhr.onload = cb;
            xhr.send();
        };
    </script>
    <script>
        var wb;
        var url = ""
        function importf() {//导入
            url = document.getElementById("url").value;
            if (url) {
                fetchAB(url, function () {
                    if (this.status == 200) {
                        wb = XLSX.read(btoa(fixdata(this.response)), {//手动转化
                            type: 'base64'
                        });
                        document.getElementById("demo").innerHTML = JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]));
                    }
                });
            }
        }
        function fixdata(data) { 
            var o = "",
                l = 0,
                w = 10240;
            for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
            o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
            return o;
        }
    </script>
</head>
<body>
    <input type="text" id="url" />
    <input type="button" onclick="importf()" value="读取" />
    <div id="demo"></div>
</body>
</html>
相关文章
|
3月前
同步读取文件
同步读取文件
46 0
|
7月前
|
C语言 C++
C/C++文件读取操作
C/C++文件读取操作
|
XML C# 数据格式
C#读取写入文件的三种方式
最近对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试,例子在文末,可下载。
93 0
54 # 可写流基本用法
54 # 可写流基本用法
31 0
Gin 学习之接收参数和读取 reader
Gin 学习之接收参数和读取 reader
91 0
|
开发者 Python Windows
文件的读取方式 | 学习笔记
快速学习 文件的读取方式
文件的读取方式 | 学习笔记
|
Java
I/O流常用复制和读写文件
I/O流常用复制和读写文件
125 0
读取文件的多种方式
读取文件的多种方式和
117 0