我有一个角6应用程序,我想从我的.NET核心API下载一个生成的PDF。
每个调用似乎都是有效的,但我不知道如何下载/打开文件。
Microsoft.AspNetCore.Mvc.Infrastructure.FileContentResultExecutor:Information:执行Microsoft.AspNetCore.Mvc.FileContentResult,发送下载名为“test.pdf”的文件。
Reporting API:
public IActionResult CreateReport()
{
XtraReport report = m_ReportingManager.GetReport();
MemoryStream ms = new MemoryStream();
report.ExportToPdf(ms);
HttpContext.Response.ContentType = "application/pdf";
FileContentResult result = new FileContentResult(ms.GetBuffer(), "application/pdf")
{
FileDownloadName = "test.pdf"
};
return result;
}在我的角组件中,我有两个对服务的调用(其中一个调用来自SO,另一个调用自己)。
public getReport1() {
this._reportViewerService.getReport()
.subscribe(blob => {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "test.pdf";
link.click();
}, error => { console.log(error) });
}
public getReport2() {
this._reportViewerService.getReport().subscribe(
(result: any) => window.open("http://localhost:44302/Reporting/test.pdf", "_blank"),
(error: any) => this._loggerService.logError(error),
() => this.loading = false
);
}我的服务是这样的:
public getReport(definitionKey: string, reportParameters: ReportParameter[]): Observable<any> {
const parameters = {
key: definitionKey,
reportParameters: reportParameters
};
return this._http.post<any>(this.baseUrl + 'CreateReport', parameters);
}发布于 2018-09-20 17:04:40
您可以使用文件保护程序包来处理文件下载。
https://www.npmjs.com/package/file-saver
我在我的应用程序中这样做了,希望你能让它适应你的:
downloadFile(data: Response){
let blob = new Blob([data], { type: 'application/pdf' });
let url= window.URL.createObjectURL(blob);
console.log(url);
window.open(url);
}
getPdf() {
const options: {
headers?: HttpHeaders,
observe?: 'body',
params?: HttpParams,
reportProgress?: boolean,
responseType: 'blob',
withCredentials?: boolean
} = {
headers: null,
params: null,
responseType: 'blob'
};
this.http.get(`your api endpoint`, options)
.subscribe(blob => {
saveAs(blob, 'file.pdf');
});
}https://stackoverflow.com/questions/52429050
复制相似问题