Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 7,如何从从输入导入的srt或csv文件中读取数据,并保存在阵列中?_Javascript_Angular_Filereader - Fatal编程技术网

Javascript Angular 7,如何从从输入导入的srt或csv文件中读取数据,并保存在阵列中?

Javascript Angular 7,如何从从输入导入的srt或csv文件中读取数据,并保存在阵列中?,javascript,angular,filereader,Javascript,Angular,Filereader,谢谢大家为我贡献时间。 我试图通过输入框上传文件(csv或srt), 并保存到数组中。我成功地读取了控制台上的文件,但无法保存到阵列。 我怎么可能做到呢? 请任何人帮帮我。 这是我的密码 public onFilechange(event: any) { let fileReader = new FileReader() //fileReader.readAsText(event.target.files[0]) let result: any file

谢谢大家为我贡献时间。 我试图通过输入框上传文件(csv或srt), 并保存到数组中。我成功地读取了控制台上的文件,但无法保存到阵列。 我怎么可能做到呢? 请任何人帮帮我。 这是我的密码

  public onFilechange(event: any) {
 
    let fileReader = new FileReader()
    //fileReader.readAsText(event.target.files[0])

    let result: any
    fileReader.onload = function (event) {
      result = (event.target as any).result
      return result
    }
    this.temporarySavingSubtitle = fileReader.readAsText(event.target.files[0])
    console.log(this.temporarySavingSubtitle) 
  }

我希望能在控制台日志上看到结果,但什么也没显示。
请帮忙

从代码中,我没有找到从文件(类似于流)获取数据的方法。我相信您需要js xlsx.js(也是其他库)将文件流解析为json。获取json后,如您所述保存到数组

单页的一些关键代码

从“xlsx”导入*为xlsx;
const\u readExcelAsync=(文件)=>{
返回新承诺((解决)=>{
const reader=new FileReader();
reader.onload=(事件)=>{
常量数据=event.target.result,
wb=xlsx.read(数据,{type:'binary'}),
结果={};
wb.SheetNames.forEach(sheet=>{
const roa=xlsx.utils.sheet_to_json(wb.Sheets[sheet],{header:1});
如果(roa.length)结果[页]=roa;
});
解析(对象值(结果)[0]);
};
reader.readAsBinaryString(文件);
});
}
导出异步函数processFile(文件){
试一试{
返回wait_readExcelAsync(文件);
}捕捉(错误){
控制台日志(err);
}
}

const content=yield调用(processFile,file);//文件是event.target.files[0]
console.log
移动到
onload
是否会显示结果?@Phix是的,当console.log位于onload内部时,它会显示结果。我认为这是您的问题。
onload
是异步的,您不能访问它之外的数据block@Phix对这就是为什么我想知道如何从外部访问数据…?你不能,除非你承诺。这里有很多关于异步问题的资源。