【发布时间】:2021-06-25 03:53:16
【问题描述】:
我有一个安全的 AWS url,它应该返回一个文件以供下载。但是,下载的文件只有 1kb 大小。当我在检查员“网络”选项卡中查看该呼叫的“预览”时,我看到了图像。就在下载结果时,它基本上根本就没有文件。下载功能在订阅 http 请求后发生:
downloadFile(file: string) {
this.awsService
.getDownloadUrl(file, poNumber, client)
.pipe(takeUntil(this.unsubscribe))
.subscribe(resp => {
if (resp && resp.url) {
this.awsService.downloadFile(resp.url).subscribe(data => {
const navigator = this.window.navigator;
const isIE = /msie\s|trident\//i.test(navigator.userAgent);
if (isIE) {
navigator.msSaveOrOpenBlob(data.Body, file);
} else {
const blob = new Blob([data.Body], { type: data.type });
const link = document.createElement('a');
link.href = this.window['URL'].createObjectURL(blob);
link.download = file;
link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: this.window }));
}
});
}
});
}
控制台或 api 响应中没有错误。
【问题讨论】:
-
您通常没有嵌套订阅,您通常使用扁平化运算符,例如 (merge/concat)Map。这可能是一个原因
-
@Nico 这不是问题,但感谢您的清理建议。这是遗留代码,所以旧的开发人员没有像他们应该做的那样做。
标签: javascript angular amazon-web-services observable