Angular загрузка изображений не работает с Inte rnet Explorer, но работает в Google chrome - PullRequest
0 голосов
/ 24 января 2020

Я успешно реализовал, работает во всех браузерах, кроме Inte rnet Explorer 11. Я использую Inte rnet explorer 11 и я реализовал, я успешно загрузил .jpeg, .jpg и. png изображение в Google Chrome, но не может загрузить в IE 11
, этот код отлично работает при разработке и производстве google chrome, но в IE11 не работает
Я могу загрузить jpeg, jpg, png в Google Chrome изображение любого размера, но не могу загрузить изображение любого типа в IE11.

<div class="form-group">
  <label class="form-control-label" jhiTranslate="companyManagement.new-logo">Upload new Logo</label>
  <input class="tdw-display-none" (change)="onFileChange($event, 'logo')" type="file"
           formControlName="logo" placeholder="Company logo">

onFileChange($event, doc: string) {
const files = $event.target.files;
if (files && files.length > 0) {
  const fileType: string = files[0].type;
  const fileSize: number = files[0].size;
  if (fileType) {
    if (fileType.includes('png') || fileType.includes('jpeg') || fileType.includes('jpg')) {
      this.image.name = files[0].name;
      this._compressImage(files[0], fileData => {
        this.image.data = fileData;
        this._mLogo = fileData;
        this.company.logo = fileData.split(',')[1];
      });
    } else {
      console.log('--------------Invalid File Type----------');
    }
  }
}

}

private bytesToSize(bytes) {
    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
    if (bytes === 0) {
      return 'n/a';
    }
    const i = Math.floor(Math.log(bytes) / Math.log(1024));
    if (i === 0) {
      return bytes + ' ' + sizes[i];
    }
    return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
  } 

    private _compressImage(file, callback) {
    this.ng2ImgMaxService.resize([file], 600, 600).subscribe(
      result => {
        this._readImageAndLoad(result, callback);
        console.log("after _readImageAndLoad");
      },
      error => {
        console.error('---------------Resize error-------------', error);
      }
    );
  }  

    private _readImageAndLoad(file, callback) {
    const reader = new FileReader();
    reader.onload = (e: any) => {
      const dataUrl = e.target.result;
      const base64 = dataUrl.split(',')[1];
      console.log(" _readImageAndLoad");
      callback(dataUrl);
    };
    reader.readAsDataURL(file);
  }

1 Ответ

0 голосов
/ 24 января 2020

Вы используете функции со стрелками (() => {}).

Они не поддерживаются IE11, поэтому вы должны изменить их на старый способ реализации. Пример:

  error => {
    console.error('---------------Resize error-------------', error);
  }

  //Should be

 function(error) {
    console.error('---------------Resize error-------------', error);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...