存储到内存中的Javascript文件读取器-参数1不是类型';水滴';

存储到内存中的Javascript文件读取器-参数1不是类型';水滴';,javascript,filereader,Javascript,Filereader,好的,我读了很多文章,尝试了很多方法。我正试图将文件读取器构建到我的代码中,结果一个接一个地出错,一次又一次。注意:这是代码的简化版本。我也尝试过10种不同的方法,但都不成功,因此我提出了这个问题 function init(){ // start the constructor constructTable = new constructTableS("ConstructionTable"); }; function constructTableS(name){ //

好的,我读了很多文章,尝试了很多方法。我正试图将文件读取器构建到我的代码中,结果一个接一个地出错,一次又一次。注意:这是代码的简化版本。我也尝试过10种不同的方法,但都不成功,因此我提出了这个问题

function init(){
    // start the constructor
    constructTable = new constructTableS("ConstructionTable");
};

function constructTableS(name){
    // Variables 
    this.name = name;
    this.csv = "";
}

constructTableS.prototype.load = function(files){
    if (window.FileReader) {
        // FileReader is supported.
        var reader = new FileReader();

        reader.onload = function(e){
            //Tried this as well : var csv = event.target.result}; 
            this.csv = reader.result};

        var x = reader.readAsText(files);



    } else {
        alert('FileReader are not supported in this browser.');
    };
目标是从主体初始化开始函数

<body onload="init()">

然后调用“class”的load函数并将文件中的数据发送给它

<input type="file" id="csvFileInput" onchange="constructTable.load(this.files)" accept=".csv">

我得到的错误是:参数1不是'Blob'类型。这来自这一行var x=reader.readAsText(文件)

我要做的是将数据加载到一个变量中,而不是一个innerHTML插槽中。我读过很多这样的例子

一旦调用该事件,它要么无法识别我的类,要么忽略该类中的任何函数,因此无法存储数据。或者它只是返回,而不是blob类型

我从这里举了一个例子:

这是可行的,但它不会将代码读入一个类中的变量,我可以在需要时调用它

this.files返回上载文件的数组,要一次读取一个文件,请使用循环

for (var i = 0; i < files.length; i++) {
    //your logic goes here
}
for(var i=0;i
this
引用当前的
HTMLElement
,该元素是文件输入元素,该元素具有名为
files
的属性,该属性是所选文件的数组

或者,如果您只允许用户一次上载一个文件,请将
this.files
更改为
this.files[0]
this.files
返回上载文件的数组,若要一次读取一个文件,请使用循环

for (var i = 0; i < files.length; i++) {
    //your logic goes here
}
for(var i=0;i
this
引用当前的
HTMLElement
,该元素是文件输入元素,该元素具有名为
files
的属性,该属性是所选文件的数组


或者,如果您一次只允许用户上载一个文件,请将
this.files
更改为
this.files[0]

一个读卡器只能读取一个文件。在
文件上使用循环。一个读卡器只能读取一个文件。在
文件上使用循环。是的,谢谢,我知道了,但它不能解决错误。谢谢。您是否将
this.files
更改为
this.files[0]
?由于错误表明您正在向其传递正确的类型,即类型为
Blob
或类型为
Blob
的子类型的
File
,请在导致错误的行上断开,并使用调试器查看传递的参数的类型。确定是文件[0]。我明白问题所在。我仍然无法从Filereader循环中提取数据?运行此命令this.csv=reader.result};本例中的文件阅读器对我没有帮助。是的,谢谢,我明白了,但它不能解决错误。谢谢。您是否将
this.files
更改为
this.files[0]
?由于错误表明您正在向其传递正确的类型,即类型为
Blob
或类型为
Blob
的子类型的
File
,请在导致错误的行上断开,并使用调试器查看传递的参数的类型。确定是文件[0]。我明白问题所在。我仍然无法从Filereader循环中提取数据?运行此命令this.csv=reader.result};在这种情况下,文件阅读器对我没有帮助。