在IE11中阅读Blob

时间:2015-08-25 20:23:16

标签: javascript csv blob internet-explorer-11 filereader

我使用this文章使用JavaScript读取CSV文件。以下代码在Chrome和Firefox中运行良好,但IE 11会引发以下错误:

Object doesn't support property or method 'readAsBinaryString'

致电时:

reader.readAsBinaryString(blob);

根据this MSDN文章,readAsBinaryStringFileReader支持的方法。我错过了什么/在IE 11中有不同的方式来读取文件吗?

HTML code:

<table>
    <tr>
        <td>Import CSV File</td>
        <td><input type="file" id="files" name="file"/></td>
    </tr>
</table>       
<button id="read" href="#">Read</button>

JS代码:

//read a file
function readBlob() {

var files = document.getElementById('files').files;

if (!files.length) {
    alert('Please select a file!');
    return;
}

var file = files[0];
var start = 0;
var stop = file.size - 1;
var reader = new FileReader();

// If we use onloadend, we need to check the readyState.
reader.onloadend = function(evt) {
    if (evt.target.readyState == FileReader.DONE) { // DONE == 2
        makeJSON(evt.target.result);
    }
};

var blob = file.slice(start, stop + 1);
reader.readAsBinaryString(blob);

}

1 个答案:

答案 0 :(得分:6)

FileReader还支持readAsText方法,该方法可用于将文件或Blob对象作为文本字符串读取到所有三个浏览器(Chrome,FF和IE11)。

reader.readAsBinaryString(blob)替换reader.readAsText(blob)解决了问题。