Angular 如何从IHttpActionResult数据以角度创建blob对象(.PDF)?

Angular 如何从IHttpActionResult数据以角度创建blob对象(.PDF)?,angular,asp.net-web-api,blob,Angular,Asp.net Web Api,Blob,我使用blob查看API(ASP.NET webAPI 2)中的PDF文件,所有这些都可以使用Angular 5正常工作 但最近我们从Angular 5升级到了version 7,我在查看PDF文件时开始出错 请检查附加错误的屏幕截图 下面是我们的实现 控制器.cs [HttpGet, Route("download")] public IHttpActionResult DownloadReport(int ID) { HttpResponseMessage result = new

我使用blob查看API(ASP.NET webAPI 2)中的PDF文件,所有这些都可以使用
Angular 5
正常工作

但最近我们从Angular 5升级到了version 7,我在查看PDF文件时开始出错

请检查附加错误的屏幕截图

下面是我们的实现

控制器.cs

[HttpGet, Route("download")]
public IHttpActionResult DownloadReport(int ID) {
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    var model = _report.GetPdfByte(ID);
    var stream = new MemoryStream(model.PDF) {
        Position = 0
    };
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentLength = model.PDF.Length;
    result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = model.Name };
    result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
    result.Content.Headers.ContentLength = stream.Length;
    return Ok(result);

}
GetFile(url: string) {
    return this.http.get(this.hostName + url 
         ,{responseType: "blob"}
    );
}
getReport(id:number) {
    this._db.GetFile('api/reports/download?id='+id).subscribe(d=>this.downloadReport(d));
}

//Blob-binary large object that stores a binary data..
// URl- it will generate custom url to read the Pdf file
downloadReport(data: any) {
    let blob = new Blob([data], {type: 'application/pdf'});
    let url= window.URL.createObjectURL(blob);
    window.open(url);
}
服务.ts

[HttpGet, Route("download")]
public IHttpActionResult DownloadReport(int ID) {
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    var model = _report.GetPdfByte(ID);
    var stream = new MemoryStream(model.PDF) {
        Position = 0
    };
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentLength = model.PDF.Length;
    result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = model.Name };
    result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
    result.Content.Headers.ContentLength = stream.Length;
    return Ok(result);

}
GetFile(url: string) {
    return this.http.get(this.hostName + url 
         ,{responseType: "blob"}
    );
}
getReport(id:number) {
    this._db.GetFile('api/reports/download?id='+id).subscribe(d=>this.downloadReport(d));
}

//Blob-binary large object that stores a binary data..
// URl- it will generate custom url to read the Pdf file
downloadReport(data: any) {
    let blob = new Blob([data], {type: 'application/pdf'});
    let url= window.URL.createObjectURL(blob);
    window.open(url);
}
组件。ts

[HttpGet, Route("download")]
public IHttpActionResult DownloadReport(int ID) {
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    var model = _report.GetPdfByte(ID);
    var stream = new MemoryStream(model.PDF) {
        Position = 0
    };
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentLength = model.PDF.Length;
    result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = model.Name };
    result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
    result.Content.Headers.ContentLength = stream.Length;
    return Ok(result);

}
GetFile(url: string) {
    return this.http.get(this.hostName + url 
         ,{responseType: "blob"}
    );
}
getReport(id:number) {
    this._db.GetFile('api/reports/download?id='+id).subscribe(d=>this.downloadReport(d));
}

//Blob-binary large object that stores a binary data..
// URl- it will generate custom url to read the Pdf file
downloadReport(data: any) {
    let blob = new Blob([data], {type: 'application/pdf'});
    let url= window.URL.createObjectURL(blob);
    window.open(url);
}
请帮助我解决或调试错误


提前感谢

下载文件的大小是多少?它是否与您的pdf的预期大小匹配?@AlexandrMihalciuc我已更新了我的问题,请检查。