На данный момент моя служба nodejs делает это:
...
fs.writeFileSync('filelocation/data.xlsx', theData, 'binary');
reponse.sendFile('filelocation/data.xlsx');
reponse.download('filelocation/data.xlsx'); // I tried this one also
...
Но как теперь загрузить это из внешнего интерфейса Angular с помощью HttpClient? Это не работает:
this.httpclient.get(url).subscribe(response => {
console.info(response); // Or whatever I need to do to download the file
});
Я хочу, чтобы вызов вызывал проводник, чтобы я мог сохранить файл. Как мне заставить это работать? Если вам нужна дополнительная информация от меня, просто дайте мне знать, пожалуйста.
Это не регистрирует ответ или регистрирует ответ, но вы не знаете, как открыть диалоговое окно сохранения (открыть проводник)? - решения двух условий сильно различаются





создайте component.ts и передайте имя файла в fileService. внутри fileService создайте функцию загрузки и, используя это, передайте имя файла на внутренний сервер. Файл можно скачать с помощью «сохранить как». Установите файловую заставку (npm установить файл-сохранитель --save) и импортируйте «saveAs» во внешний компонент.
Download(filename){
console.info(filename);
this.fileService.download(filename).subscribe((data)=>{
console.info(data);
saveAs(data, filename);
});
}
Компонент.ts
download(filename){
const fileObj = {
filename : filename
};
console.info(fileObj);
return this.http.post(`http:localhost:3000/download`, fileObj, {
responseType : 'blob',
});
}
файлService.ts
app.post('/download', (req, res, next) => {
console.info('here');
filepath = path.join(__dirname,'../uploadedFiles') + '/' + req.body.filename;
console.info(filepath);
res.sendFile(filepath);
});
Сервер.js
Эта ссылка может помочь stackoverflow.com/questions/35138424/…