二进制文件损坏-如何下载带有AngularJS的二进制文件下载任何文件使用ResponseEntity与角不工作我需要下载一个文件使用角在客户端,这个文件可以有任何格式,它可以是一个pdf或Excel,图像或txt.我的方法只适用于txt文件,给出了Excel和图像的失败格式,而对于pdf,它给出了一个空的pdf。因此,在我的控制器中,有一个调用服务方法的函数: vm.downloadFile = downloadFile;
function downloadFile(file){
var urlDir = "C://STCI//"+idpeticion;
return VerDocServices.downloadFile(file,urlDir)
.then(function(response) {
var data = response.data;
var filename = file;
var contentType = 'application/octet-stream';//octet-stream
var linkElement = document.createElement('a');
try {
var blob = new Blob([ data ], {
type : contentType });
var url = window.URL.createObjectURL(blob);
linkElement.setAttribute('href', url);
linkElement.setAttribute("download", filename);
var clickEvent = new MouseEvent("click", {
"view" : window,
"bubbles" : true,
"cancelable" : false
});
linkElement.dispatchEvent(clickEvent);
} catch (ex) {
console.log(ex);
throw ex;
}
}).catch(function(response) {
alert('Se ha producido un error al exportar del documento');
console.log(response.status);
throw response;
});
}我的服务处有:angular.module('mecenzApp').service('VerDocServices',['$http',function($http) {this.downloadFile = function(file,urlDir) {
return $http.get('api/downloadFile', {
params : {
file : file,
urlDir : urlDir }
}); }} ]);请你看一看,告诉我错过了什么吗?谢谢:)
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
如何使用AngularJS下载二进制文件
responseType
:
app.service('VerDocServices',['$http',function($http) { this.downloadFile = function(url, file, urlDir) { var config = { //SET responseType responseType: 'blob', params : { file : file, urlDir : urlDir } }; return $http.get(url, config) .then(function(response) { return response.data; }).catch(function(response) { console.log("ERROR: ", response.status); throw response; }); }; }]);
responseType
- 2 回答
- 0 关注
- 683 浏览
添加回答
举报
0/150
提交
取消