Для веб-приложения мне нужно получать изображения с помощью ajax-запроса, потому что у нас есть подпись + аутентификация в нашем API, поэтому мы не можем получить изображения с помощью простого <img src="myapi/example/145"/>
Поскольку мы используем angular2, мы, очевидно, искали блоб или что-то в этом роде, но, как указано в файле static_response.d.ts
:
/**
* Not yet implemented
*/
blob(): any;
Так что ладно, я пока не могу этого сделать, мне нужно дождаться реализации этой функции.
Но проблема в том, что я не могу ждать, поэтому мне нужно исправление или небольшой хак, чтобы получить данные изображения из ответа, и я смогу удалить свой хак и настроить вызов метода blob()
как хороший, когда он будет реализован .
Я пробовал это:
export class AppComponent {
constructor(private api:ApiService, private logger:Logger){}
title = 'Tests api';
src='http://placekitten.com/500/200'; //this is src attribute of my test image
onClick(){ //Called when I click on "test" button
this.api.test().then(res => {
console.log(res._body);
var blob = new Blob([new Uint8Array(res._body)],{
type: res.headers.get("Content-Type")
});
var urlCreator = window.URL;
this.src = urlCreator.createObjectURL(blob);
});
}
}
методом ApiService.test()
:
test():Promise<any> {
return this.http.get(this._baseUrl + "myapi/example/145", this.getOptions())
//getOptions() is just creating three custom headers for
//authentication and CSRF protection using signature
.toPromise()
.then(res => {
this.logger.debug(res);
if(res.headers.get("Content-Type").startsWith("image/")){
return res;
}
return res.json();
})
.catch(res => {
this.logger.error(res);
return res.json();
} );
}
Но я не получаю от него никакого изображения, и регистрация данных ответа показывает большую строку, которая является данными изображения.
У вас есть хак для этого?