使用javascript中的类读取用户输入txt文件

时间:2018-04-13 22:08:26

标签: javascript file class input

我有一个数据文件,我需要从中提取数据。它必须通过html输入提交。我想创建一个DataReader类来执行此操作。该类需要使用该文件构造并从文件中提取其属性,因此

class DataReader() {
  constructor(file) {
     this.file = file;
  }
  extractData(){...}
}

var data = new DataReader(file);
console.log(data.attr0, data.attr1, data.attr3, ...);

我不断得到范围问题,我不知道如何让类在实例化时获取文件,因此它会分隔它的属性。

这就是我所拥有的

class DataReader {
setFile(file) {
    this.file = file;
}

getFile() {
    return this.file;
}

extractData() {
    var self = this; // this == DataReader

    var objXMLhttp = new XMLHttpRequest();
    objXMLhttp.open("GET","diabetes400.txt",true);
    objXMLhttp.send();

    objXMLhttp.onreadystatechange = function() {
      if (objXMLhttp.readyState==4 && objXMLhttp.status==200) {
        var arrContents = objXMLhttp.responseText.split("\n"); // gotcha!
        self.setFile(arrContents);
        console.log(arrContents);
      }
        }

    }
}

var data = new DataReader();
data.extractData();
console.log(data.file);

如果我只记录数据,我可以在其中看到包含文件的对象,但文件打印未定义

1 个答案:

答案 0 :(得分:0)

我认为你需要一个FileReader。 看看这个项目:http://bgrins.github.io/filereader.js/。 您可以读取文件并获取其中的内容。

看一下这个例子:

var inputUpload = document.getElementById('file-input');
FileReaderJS.setupInput(inputUpload , {
    on: {
       load: function(event, file){
            var textBase64 = event.srcElement.result
            var decodedText = atob(e.srcElement.result.split("base64,")[1]);
       }
    }
});