使用angualr和expressionJS下载所有文件格式

我正在下载angularjs中的所有文件格式。 与代码pieace我可以下载文本格式。 但对于所有其他格式,我无法打开下载的文件。 我的REST服务提供响应内容types:application / octet-stream。 我的codebase调用express.js的res.send(body)方法,内容types为application / json。 下载的图像大小加倍,我也可以看到身体的types是string。

我试图调用express.js的res.download(path,文件名,callback)函数与content-type:application / octet-stream如果请求是下载调用。 这是一个正确的方法吗? 此外,我不知道哪个path发送res.download函数,因为该文件来自服务器端。 请帮助我。

我的客户代码:

$scope.downloadFile = function(key) { service.downloadFile().then(function(result) { var blob = new Blob([result], { type: 'application/octet-stream; charset=utf-8' }); var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL; var url = urlCreator.createObjectURL(blob); var element = angular.element('<a/>'); element.attr({ href: url, target: '_blank', download: key })[0].click(); }); } 

我的一位同事分享了一个解决了我的问题的链接。 有办法直接代理传入的stream。 这个细节可以在https://github.com/request/request中find

 req.pipe(request('url')).pipe(resp) 

有了这个stream可以提供给客户端和客户端可以调用链接/ URL来利用附加的文件。

客户代码:

 $scope.downloadFile = function(key) { var url = 'http://localhost:8080/getFile'; var element = angular.element('<a/>'); element.attr({ href: url, target: '_blank', download: fileName })[0].click(); }); }