【问题标题】:angular 4 / res.download from nodejs back-endangular 4 / res.download 从 nodejs 后端
【发布时间】:2019-07-25 15:00:50
【问题描述】:

我正在调用一个 Angular 组件,该组件调用我创建的 API 服务来调用 nodejs 后端。后端使用 res.download 下载一个 zip 文件。我相信响应没有被正确处理,因为当我直接从 url (localhost:3000/api/download/file) 调用后端时,它工作得很好。下面是代码:

1) 角度组件

downloadZipFile(index) {
    this._apiService.downloadZip(index).subscribe(data => {
    });
  }

2) Angular apiService

downloadZip(index) {
    return this._http.get('http://localhost:3000' + appConfig.__apiUrl + 'download/' + index);
  }

3) NodeJS API

router.get('/download/:index', (req, res) => {
  res.download(path.join(__dirname, 'downloads/' + req.params.index + '.zip'));
});

【问题讨论】:

标签: node.js angular api


【解决方案1】:

您在 Angular 服务 HTTP 请求中附加了多个时间 API url。请删除其中之一。并再次检查。

downloadZip(index) {
    return this._http.get('http://localhost:3000/download/' + index);
  }

在您的服务中添加上述代码。

【讨论】:

  • 感谢@shubham 的回答。很正常,appConfil.__apiUrl 等于 const '/api/',问题不在于这部分代码。我相信它来自响应处理。
  • 不是,这种情况下appConfig.__apiUrl是必须的。
  • 不加/api怎么能直接运行呢?你说这个“localhost:3000/download/file”正在工作。
  • 这是我的错误。我将其更改为 'localhost:3000/api/download/file'。很抱歉。
  • 不,我仍然有同样的问题。当我直接调用'localhost:3000/api/download/file'时,代码运行完美,但从前端Angular调用api时不起作用。
猜你喜欢
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 2023-03-19
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 2019-08-10
相关资源
最近更新 更多