我正在尝试从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();
});
响应标题看起来像
任何帮助欣赏!!
感谢
答案 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);
});
})