Angular 如何从IHttpActionResult数据以角度创建blob对象(.PDF)?
我使用blob查看API(ASP.NET webAPI 2)中的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
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我已更新了我的问题,请检查。