reader.onload = function 函数中e参数是哪来的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了reader.onload = function 函数中e参数是哪来的相关的知识,希望对你有一定的参考价值。

一个爬去Excel数据的方法 但是我一直弄不懂 reader.onload = function(e) 这个函数中的e参数是从哪里来的

var excel_data;//读取完成的数据
function importf(obj) //导入
if(!obj.files) //是否有上传文件,没有则不执行
return;

var file = obj.files[0];
var reader = new FileReader();
reader.onload = function(e)
var data = e.srcElement.result;
excel_data = XLSX.read(data,
type: 'binary'
); $("#file_data").attr("value",JSON.stringify(XLSX.utils.sheet_to_json(excel_data.Sheets[excel_data.SheetNames[0]])));
;
reader.readAsBinaryString(file);

直接回答的话就是:e代指event,其实其中所谓的e就是一个ProgressEvent:

ProgressEvent 是一个用来测量底层操作进度的接口,可以测量HTTP请求(例如:一个 XMLHttpRequest请求、或者一个底层资源如 <img>, <audio>, <video>, <style> or <link>).

你甚至可以不适用e,使用a、b、c、d、都可以指代它。


继续解释的话就是说:

ProgressEvent在控制台打印出来就是一个对象,对象中各种属性,你代码中的

reader.readAsBinaryString(file);

这一个是把file以二进制字符串的形式读取到FileReader对象reader中,读取的这个过程就是在进行一个ProgressEvent,而二进制字符串就被放在了ProgressEvent这个事件对象中,那么存放在哪里呢?

存放在target属性、currentTarget属性和srcElement属性中的result属性里面,所以你可以通过:

var data = e.srcElement.result;
//或者var data = e.currentTarget.result;
//或者var data = e.target.result;

这一句代码把读出来的二进制字符串赋值给data变量,这也就是FileReader的一个工作流程了。

参考技术A reader.readAsText(files[0], "UTF-8");//读取文件改为 reader.readAsText(file, "UTF-8");//读取文件

文件file对象转换为base64格式数据

function getBase64 (file) {
    return new Promise(function (resolve, reject) {
      let reader = new FileReader()
      let imgResult = ‘‘
      reader.readAsDataURL(file)
      reader.onload = function () {
        imgResult = reader.result
      }
      reader.onerror = function (error) {
        reject(error)
      }
      reader.onloadend = function () {
        resolve(imgResult)
      }
    })
};
export default getBase64;

  技术图片

 

 用:技术图片

 

以上是关于reader.onload = function 函数中e参数是哪来的的主要内容,如果未能解决你的问题,请参考以下文章

文件file对象转换为base64格式数据

上传图片在前台预览

有没有办法使用 reader.onload return 来设置我的状态?

获取图片上传前的宽高

上传原理

上传图片显示