控制台出错:参数不是Blob类型

时间:2016-07-19 16:56:42

标签: javascript file-io

<script>
        var file = document.getElementById("userFile").files[0];
        var reader = new FileReader();
        reader.readAsArrayBuffer(file);
        var byteArray = reader.result;
        console.log(byteArray);
</script>

此代码在控制台中产生此错误:无法在“FileReader”上执行“readAsArrayBuffer”:参数1的类型不是“Blob”。

据我了解,FileReader可以接受Blob和File作为参数,因为File接口基于Blob。

1 个答案:

答案 0 :(得分:0)

FileReader要求使用.onload property来在readAsArrayBuffer(和其他FileReader方法)完成时触发回调。下面的代码段包含一个如何与文件输入的onChange事件一起使用的示例:

const input = document.getElementById('userFile');
const reader = new FileReader();

input.onchange = function() {
  const file = input.files[0];
  reader.readAsArrayBuffer(file);
};

reader.onload = function() {
  const resultArray = new Int8Array(reader.result);
  document.getElementById('result').innerHTML = resultArray;
};
<input type="file" id="userFile"/>
<h4>File Data:</h4>
<span id="result"/>