将图像转换为角度为2的base64

lak*_*hmi 10 javascript java jquery typescript angular

将图像转换为角度为2的base64,图像从本地上传.当前我正在使用fileLoadedEvent.target.result.问题是,当我通过REST服务将此base64字符串发送到java时,它无法对其进行解码.当我尝试这个base64字符串与免费在线编码器解码器,我也看不到解码图像.我也试过用画布.没有得到正确的结果.有一件事是肯定base64字符串得到的是不正确的,我需要为此添加任何包吗?或者在角度2中,有任何特定的方式将图像编码为base64,就像在角度1 - angular-base64-upload包中一样.

请在我的示例代码下面找到

onFileChangeEncodeImageFileAsURL(event:any,imgLogoUpload:any,imageForLogo:any,imageDiv:any)
{
    var filesSelected = imgLogoUpload.files;
    var self = this;
    if (filesSelected.length > 0) {
      var fileToLoad = filesSelected[0]; 

      //Reading Image file, encode and display
       var  reader: FileReader = new FileReader();
       reader.onloadend = function(fileLoadedEvent:any) {

       //SECOND METHO
       var imgSrcData = fileLoadedEvent.target.result; // <--- data: base64 

        var newImage = imageForLogo;
        newImage.src = imgSrcData;
        imageDiv.innerHTML = newImage.outerHTML;

      }
      reader.readAsDataURL(fileToLoad);
    }
}
Run Code Online (Sandbox Code Playgroud)

Par*_*iya 35

使用base64字符串的plunkr

https://plnkr.co/edit/PFfebmnqH0eQR9I92v0G?p=preview

  handleFileSelect(evt){
      var files = evt.target.files;
      var file = files[0];

    if (files && file) {
        var reader = new FileReader();

        reader.onload =this._handleReaderLoaded.bind(this);

        reader.readAsBinaryString(file);
    }
  }



  _handleReaderLoaded(readerEvt) {
     var binaryString = readerEvt.target.result;
            this.base64textString= btoa(binaryString);
            console.log(btoa(binaryString));
    }
Run Code Online (Sandbox Code Playgroud)


Joh*_*srk 6

I modified Parth Ghiya answer a bit, so you can upload 1- many images, and they are all stored in an array as base64 encoded strings

base64textString = [];

onUploadChange(evt: any) {
  const file = evt.target.files[0];

  if (file) {
    const reader = new FileReader();

    reader.onload = this.handleReaderLoaded.bind(this);
    reader.readAsBinaryString(file);
  }
}

handleReaderLoaded(e) {
  this.base64textString.push('data:image/png;base64,' + btoa(e.target.result));
}
Run Code Online (Sandbox Code Playgroud)

HTML file

<input type="file" (change)="onUploadChange($event)" accept=".png, .jpg, .jpeg, .pdf" />
<img *ngFor="let item of base64textString"  src={{item}} alt="" id="img">
Run Code Online (Sandbox Code Playgroud)