角下载node.js response.sendFile

时间:2019-05-21 05:44:16

标签: node.js angular-httpclient

目前,我的nodejs服务正在执行此操作:

...
fs.writeFileSync('filelocation/data.xlsx', theData, 'binary');
reponse.sendFile('filelocation/data.xlsx');
reponse.download('filelocation/data.xlsx'); // I tried this one also
...

但是现在如何使用HttpClient从Angular前端下载此文件?这不起作用:

this.httpclient.get(url).subscribe(response => {
  console.log(response); // Or whatever I need to do to download the file
});

我希望呼叫调出文件浏览器,以便我可以保存文件。我该如何工作?如果您需要我的更多信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

创建一个component.ts并将文件名传递给fileService。 在fileService内创建下载功能,并使用该功能将文件名传递给后端服务器。可以使用“ saveAs”下载文件。安装filesaver( npm install file-saver --save ),然后在前端组件中导入“ saveAs”。

Download(filename){
console.log(filename);
this.fileService.download(filename).subscribe((data)=>{
  console.log(data);
  saveAs(data, filename);
});

} Component.ts

download(filename){
const fileObj = {
  filename : filename
};
console.log(fileObj);
return this.http.post(`http:localhost:3000/download`, fileObj, {
  responseType : 'blob',
});

} fileService.ts

app.post('/download', (req, res, next) => {
console.log('here');
filepath = path.join(__dirname,'../uploadedFiles') + '/' + req.body.filename;
console.log(filepath);
res.sendFile(filepath);

}); Server.js