下载文件 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') });
与回复内容重叠。
我使用 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') });
与回复内容重叠。