Angular2 конвертирует гекс в файл и отображает его - PullRequest
0 голосов
/ 05 июня 2018

Мне нужно отобразить изображение, отправленное подачей.Мое приложение angular2 получает hex string, которое я конвертирую в byteArray, затем в blob, затем в file.В моем console.log я вижу преобразованный файл:

File(1975561) {name: "uploaded_file.jpg", lastModified: 
    1528145682995, lastModifiedDate: Mon Jun 04 2018 16:54:42 GMT-040.... 

Но когда я пытаюсь отобразить его, он не работает.Показывает только значок изображения.enter image description here

То же самое происходит, если я открываю его в новом окне.Я проверил правильность шестнадцатеричной строки в онлайн-конвертере в шестнадцатеричный файл и получил правильный файл.Так что мой гекс правильный.Мой код:

Service:
public hexToFile(hex): Observable<any> {
  return Observable.create(observer => {
    let bytes = [];
    for ( let i = 0; i < hex.length; i += 2) {
      bytes.push(parseInt(hex.substr(i, 2), 16));
    }
    let blob = new Blob(bytes, { type: "image/jpeg" });
    let file = new File([blob], "uploaded_file.jpg", {type: "image/jpeg", lastModified: Date.now()});
    observer.next(file);
  });
}

Component:
public showFile(hex) {
    let _self = this;
    this.service.hexToFile(hex).subscribe(file => {
      let url = URL.createObjectURL(file);
      _self.sanitizedUrl = _self.sanitizer.bypassSecurityTrustUrl(url);
    });
}


<div *ngIf="image">
  <img src=`{{sanitizedUrl}}` width="500px"/>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...