无法使用Angular JS

时间:2016-11-02 05:38:49

标签: javascript angularjs filesaver.js

在我的Angular JS应用程序中,通过$ http post。下载Excel工作簿。

我使用下面的代码并以JSON的形式传递信息作为有效负载,并通过角度$ http post web服务将其发送到服务器REST Web服务(使用Java Spring REST)使用来自JSON的信息并生成一个格式为application / vnd.ms-excel的Excel工作簿。如果我尝试使用“发送并保存”选项保存POSTMAN的响应以进行后端路由测试,则excel文件将以正确的格式保存(如果我提供response.xls)。但是使用Angular JS在$ http帖子的成功主体中的响应,我在该响应变量中获取二进制数据并使用FileSaver将其保存为二进制数据。

 myservice.getExcel = function (searchParam) {

    var data=  $http.post('http:localhost:8080/export/xls', 
             {
                searchParam: searchParam,

            }
        , 
            {headers: {
                'Content-type': 'application/json'
            }},{ responseType: 'arraybuffer' }).success(function (response, status, headers, config) {
    console.log(response);
            var blob = new Blob([response], { type: 'application/vnd.ms-excel' }),
                fileName = 'MyReport.xls';
            if (window.navigator.msSaveOrOpenBlob) {
                window.navigator.msSaveOrOpenBlob(blob, fileName);
            } else {
                 var objectUrl = URL.createObjectURL(blob);
                window.open(objectUrl);
                var anchor = angular.element('<a/>');
                anchor.css({ display: 'none' });
                angular.element(document.body).append(anchor);
                anchor.attr({
                    href: (window.URL || window.webkitURL).createObjectURL(blob),
                    target: '_blank',
                    download: fileName
                })[0].click();
                anchor.remove();
            }
        }).error(function (data, status, header, config) {
            console.log("Error"+data);
        });

我也有FileSaver但得到相同的结果。请建议如何解决此问题。 在打开excel之前,我得到的是“您要打开的文件”xls“,其格式与文件扩展名不同。验证该文件未损坏” 响应以字节形式出现。 我在这样的excel文件中获取以下数据, ��ࡱ�;��
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½½¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½A����\pB�a=���= h:�#8X @ï ¿½ “��1���Arial1���Arial1���Arial1���Arial1���Arial” $ “#,## 0 _);(” $ “#,## 0)” $“#,## 0 _);红“$”#,## 0.00 _);(“$”#,## 0.00)%“$”#,## 0.00 _);红色,'_(#,## 0_ ); (*(#,## 0); (*“ - ”); (@ )5)0 (“$” *#,## 0 _); (“$”*(#,## 0); (“$”*“ - ”); (@ )=,8 (“$”*#,## 0.00 _); (“$”*(#,## 0.00); (“$”*“ - ”? ?); (@ )4 + / (*#,## 0.00 _); (*(#,## 0.00); (*“ - ”?? ); (@_)ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½½¿ïï½½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½½¿ïス����������������� ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ ½ï¿½ï¿½+�����)�����,�����* ����������

1 个答案:

答案 0 :(得分:0)

未经测试......但我会试一试

var opts = {
  method: 'POST',
  url: 'http:localhost:8080/export/xls',
  headers: {'Content-type': 'application/json'},
  data: {searchParam: searchParam},
  responseType: 'blob'
}

var data = $http(opts)
.then(function(response) {
  fileName = 'MyReport.xls';
  saveAs(response.data, fileName);
}, function (err) {
  console.log("Error", err);
});