响应具有图像数据,但我无法从响应中提取它.
客户代码 -
download() {
this._http.get('http://localhost:9000/download/' + this._fileid)
.subscribe(
data => {
this.image = data;
},
err => console.log('Error is..:' + err)
);
}
Run Code Online (Sandbox Code Playgroud)
服务器代码 -
app.get('/download/:fileid', function(req, res) {
var id = req.params.fileid;
res.set('Content-Type', 'image/jpeg');
gfs.createReadStream({_id: id}).pipe(res);
});
Run Code Online (Sandbox Code Playgroud)
[编辑] - 我已经调整了我的代码以使用CustomXhr但是我得到一个没有数据的空blob.
CUSTOM XHR代码 -
@Injectable()
export class CustomBrowserXhr extends BrowserXhr {
build(): any {
let xhr = super.build();
xhr.responseType = "blob";
return <any>(xhr);
}
}
Run Code Online (Sandbox Code Playgroud)
BOOTSTRAP CODE-导出函数main(initialHmrState?:any):Promise {
export function main(initialHmrState?: any): Promise<any> {
return bootstrap(App, [
...ENV_PROVIDERS,
...PROVIDERS, …Run Code Online (Sandbox Code Playgroud) 下面的指令使用MessageBus类注册一个监听器.在调用调度函数时执行已注册的回调.我需要从回调中访问"dragZoneElems"并对其执行操作.请告知如何做到这一点.目前它说dropZoneElems = undefined,因为这个数据在回调范围之外.但是数据存在且未定义.
export class DragZoneDirective implements OnInit{
private _messageBus : IMessageBus
@Input() dragZoneElems: Object[];
constructor() {
this._messageBus = MessageBus;
}
ngOnInit(){
this._messageBus.listen("dragStart", function(val) {
console.log("DragStart", this.dragZoneElems);
let index = this.dragZoneElems.indexOf(val);
if(index > -1)
this.dragZoneElems.slice(index, 1);
});
this._messageBus.listen("dragStop", function(val) { console.log("DragStop"); });
}
}
Run Code Online (Sandbox Code Playgroud)
消息总线 -
static dispatch(event: string, info?: any): void {
this.listeners
.forEach((l) => {
if (l["event"] === event) {
l["cb"](info);
}
});
}
Run Code Online (Sandbox Code Playgroud)