Уважаемые, я работаю с проектом на основе Angular 5, где мне нужно отобразить изображение (в качестве источника используется кодировка base64) с помощью объекта FileReader
. Он отлично работает в Chrome и Firefox, но не работает в Safari (как в Ipad, так и в Iphone).
Это мой код, который я нашел в Pipe:
httpClient.get(url, {headers: headers, responseType: "blob"})
.switchMap(blob => {
let imageBlob = new Blob([blob], {type: 'image/png'});
return Observable.create(observer => {
const reader = new FileReader();
reader.readAsDataURL(imageBlob);
reader.onloadend = ()=>{
let securedPath = this.sanitizer.bypassSecurityTrustResourceUrl(reader.result);
observer.next(securedPath); // emit the base64 string result
}
if(download){
this.helperService.downloadFile(download, blob);
}
});
});
Я нашел несколько источников, которые рекомендуют проверить, существует ли FileReader
в браузере и, если нет, обработать соответствующим образом, например:
if(FileReader) { //returns true in Safari.
alert("The browser SUPPORTS FileReader");
} else {
alert("The browser doesn't support the FileReader Object, so do this ");
}
Проблема в том, что проверка возвращает true
, а typeof FileReader
возвращает function
, поэтому версия моего браузера Safari (9.0) уже поддерживает объект FileReader
.
Более того, когда я проверяю длину кодировки base64
, она всегда показывает 5
, а источник сокращается до data:..
в Safari. Остальное удаляется в Safari.
Буду очень признателен, если кто-нибудь поможет мне решить эту проблему.
Спасибо!