在Angular中将多个上传的文件转换为Base64

时间:2019-05-29 00:50:09

标签: angular

我正在尝试将上传的文件转换为base64,以便将其上传到我的Angular应用程序中的API

我有以下代码对单个文件非常有效,但是如果用户选择多个文件,我只会多次获得第一个文件,即第二个及后续文件不会转换为Base64。

我在做什么错了?

onFileChanged(event) {

    var files = event.target.files;

    for (let i = 0; i < event.target.files.length; i++) {

        this.selectedFile = new SelectedFile();

        this.totalSize += files[i].size;
        var extension = files[i].name.split('.').pop();

        this.selectedFile.extension = (extension === files[i].name) ? '' : extension;
        this.selectedFile.name = files[i].name;
        this.selectedFile.size = files[i].size;

        var reader = new FileReader();

        reader.onload = this.handleReaderLoaded.bind(this);
        reader.readAsBinaryString(files[i]);    
  };
}

handleReaderLoaded(readerEvt) {
  var binaryString = readerEvt.target.result;
  this.base64textString = btoa(binaryString);
  this.selectedFile.file = btoa(binaryString);
  this.selectedFiles.push(this.selectedFile);
}

0 个答案:

没有答案