下载文件 Angular 和 Filesaver.js 不工作

Download file with Angular and Filesaver.js not working

我使用 Filesaver.js 尝试从我的后端下载文件,它在 Express (nodejs) 上。

这是我下载文件的后端代码。它使用中间件来检查授权信息。

res.download(url, function (err) {
   if (err) {
      console.log("Error: " + err);
      res.status.send({
         message: "Can not download file"
      });
   }
});

这是我的服务代码:

downloadEventAttachment(attachmentUrl){

    let endPointUrl = this.auth.getServerHost();

    this.authHttp.get(endPointUrl + attachmentUrl)
        .subscribe(res => {
            var blob = new Blob([res], { type: res.headers.get('Content-Type') });
            saveAs(blob);
        }) 
}

问题是生成了下载文件但有错误。 如果我下载图片,它说图片无效。

如果我尝试下载一个 txt 文件,它的内容如下:

Response with status: 200 OK for URL: http://192.168.1.78:8081/calendar/download_eventattachment/728/file-1496421767591.txt

如果我使用这个来自邮递员的请求,那么图像就很好显示了。

我做错了什么?

非常感谢

[更新 1]

我添加了 responseType 但仍然无法正常工作:

downloadEventAttachment(attachmentUrl){
        let endPointUrl = this.auth.getServerHost();

        let options = new RequestOptions({ responseType: ResponseContentType.Blob });

        this.authHttp.get(endPointUrl + attachmentUrl, options)
            .subscribe(res => {

                var blob = new Blob([res], { type: res.headers.get('Content-Type') });
                saveAs(blob);
            },
            error => {
                console.log(error);
            })
    }

最终以这种方式工作:

downloadEventAttachment(attachmentUrl){
    let endPointUrl = this.auth.getServerHost();
    let options = new RequestOptions({ responseType: ResponseContentType.Blob });
    this.authHttp.get(endPointUrl + attachmentUrl, options)
        .subscribe(res => {
                var file = res.blob();
            });
            saveAs(file);
        },
        error => {
            console.log(error);
        })
}

我认为较旧的行:var blob = new Blob([res], { type: res.headers.get('Content-Type') });

与回复内容重叠。