【发布时间】:2019-09-15 19:58:30
【问题描述】:
在我的应用程序中下载文件时遇到了一些问题。为了下载文件,我在用于将数据导入应用程序的 API 中进行了新调用。我已经使用 Postman 测试了这个 API,它似乎可以正常工作,因为我可以通过调用下载文件。
不幸的是,在我的 Angular 应用程序中实现它时遇到了一些问题。当我调用下面的函数时,我得到一个“损坏”的文件,因为它无法打开。我已经检查了与我的问题相关的其他问题/解决方案,但在尝试了大部分之后,我没有进一步了解。
我的服务中的调用:
DownloadFile (companyId: string, fileId: string, extension: string, fileName: string): Observable<Blob> {
const options = { responseType: 'blob' as 'json' }
return this.http.get<Blob>(this.baseApiUrl + this.baseTag + "?companyId=" + companyId + "&fileId=" + fileId + "&extension=" + extension + "&fileName=" + fileName, options)
}
使用服务的调用:
this.data.DownloadFile(this.company.id, selectedItem.id, this.getFileNameWithoutExtension(selectedItem.fileName), this.getExtensionFromFileName(selectedItem.fileName))
.subscribe(resultBlob =>
{
//Success
console.log('start download:', resultBlob);
var blob = new Blob([resultBlob], { type: "application/pdf" } );
saveAs(blob, selectedItem.fileName);
},
error => {
//Error
console.log(error);
});
我没有看到我的这部分代码有什么问题。
【问题讨论】:
-
看起来您在调用 data.DownloadFile() 时翻转了文件名和扩展名参数?另外,我很好奇您为什么要硬设置应用程序类型?
-
谢谢!我有点太仓促了,参数切换似乎就是这样。如果您将其发布为答案,我会将其标记为正确。硬编码的应用程序类型仅用于测试,它将动态设置,以便可以下载所有存储的文件。
-
啊,有道理。我还注意到您使用 saveAs - 很好的调用,它在包括 IOS 在内的平台上运行良好。
-
看到它在另一个帖子中被使用,很高兴知道这是一个不错的选择!
标签: angular api angular-httpclient angular7