Мне нужно отобразить изображение, отправленное подачей.Мое приложение 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....
Но когда я пытаюсь отобразить его, он не работает.Показывает только значок изображения.
То же самое происходит, если я открываю его в новом окне.Я проверил правильность шестнадцатеричной строки в онлайн-конвертере в шестнадцатеричный файл и получил правильный файл.Так что мой гекс правильный.Мой код:
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>