下载文件AngularJS

时间:2014-11-26 11:06:56

标签: asp.net-mvc angularjs asp.net-mvc-5 download

我正在尝试从asp.net控制器ActionResult下载文件但是如何从浏览器下载?

我在控制器级别返回文件

  return File(pdfStream, "application/pdf", "sample.pdf");
角度代码

reportService.getReport().then(function(file){

  //how to make this file download  

})

我尝试使用此代码但仅在浏览器为chrome但该文件内容为空时才下载pdf

reportService.getReport().then(function (file) {
    var hiddenElement = document.createElement('a');
    hiddenElement.href = 'data:attachment/pdf,' + encodeURI(file);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'myFile.pdf';
    hiddenElement.click();
});

响应标题看起来像

enter image description here

任何帮助欣赏!!

感谢

1 个答案:

答案 0 :(得分:0)

假设您使用的是$ http.post

您可以使用FileSaver.js https://github.com/eligrey/FileSaver.js

并将响应类型设置为blob。

像这样,

reportService.getReport().then(function(url, data){

return $http.post(url, data, { responseType:'blob' })
                    .then(function (response) {                        
                        try {                            
                            $timeout(function () {
                                saveAs(response.data, "mypdf.pdf");                                
                            });
                        } catch (ex) {
                            console.log(ex);
                        }                                                
                    }, function (response) {
                        // error
                        return $q.reject(response.data);
                    });


})