Angular - 读取文件并解析其内容

Kar*_*hik 31 angular angular5

我有文件上传控件,它保存所选文件,如下所示,

<div class="Block">
  <label id="lbl">File </label>
  <input #fileInput type='file'/>
</div>
Run Code Online (Sandbox Code Playgroud)

我有一个提交按钮,如下所示,

<button type="button" class="btn btn-primary" 
     (click)="uploadDocument()">Upload File</button>
Run Code Online (Sandbox Code Playgroud)

当我选择一个文件并单击上传按钮时,我需要文件中的内容,而不是将其发送到服务器并从那里读取.

注意:文件类型为 csv

Ara*_*ind 46

您可以FileReader在javascript 中使用它来实现此csv文件

添加文件更改事件以将文件存储在对象中,如下所示,

<div class="Block">
  <label id="lbl">Code </label>
  <input type='file' (change)="fileChanged($event)">

</div>
Run Code Online (Sandbox Code Playgroud)

该函数应将文件设置为稍后使用的对象

file:any;
fileChanged(e) {
    this.file = e.target.files[0];
}
Run Code Online (Sandbox Code Playgroud)

单击提交按钮后,您可以使用javascript中的readAsText()方法FileReader获取如下内容,

uploadDocument(file) {
    let fileReader = new FileReader();
    fileReader.onload = (e) => {
      console.log(fileReader.result);
    }
    fileReader.readAsText(this.file);
}
Run Code Online (Sandbox Code Playgroud)

注意:onload在读取内容后将触发事件,因此您的逻辑应该在onLoad函数内部.


bry*_*n60 7

您从输入中提取文件并使用FileReader API

readFile(file: File) {
    var reader = new FileReader();
    reader.onload = () => {
        console.log(reader.result);
    };
    reader.readAsText(file);
}
Run Code Online (Sandbox Code Playgroud)

  • 我如何将文件内容读取或存储到某个数组中,以便我可以将这些内容用于其他位置。 (2认同)

Rez*_*eza 7

如果你想让它成为你可以做的功能

    readFileContent(file: File): Promise<string> {
        return new Promise<string>((resolve, reject) => {
            if (!file) {
                resolve('');
            }

            const reader = new FileReader();

            reader.onload = (e) => {
                const text = reader.result.toString();
                resolve(text);

            };

            reader.readAsText(file);
        });
    }
Run Code Online (Sandbox Code Playgroud)

然后

const fileContent = await readFileContent(file);
Run Code Online (Sandbox Code Playgroud)


kat*_*ibs 6

对于那些询问如何看完后得到的字符串数据,该数据是在result财产fileReader。检查下面的代码示例。

    let fileString:any= "";

    uploadDocument(file) {
        let fileReader = new FileReader();
        fileReader.onloadend = (e) => {
           //console.log(myReader.result);
           // Entire file
           console.log(myReader.result);

           // By lines
           var lines = myReader.result.split('\n');
           for(var line = 0; line < lines.length; line++){
               console.log(lines[line]);
           }

           this.fileString = myReader.result;
        };

        fileReader.readAsText(this.file);
    }  
Run Code Online (Sandbox Code Playgroud)