转换的blob正在以不正确的格式获取文件

时间:2015-07-20 17:47:21

标签: javascript angularjs excel

我正在尝试在下载空文件时向用户发送警报(在这种情况下,服务器会将号码0发回:

$http.get(service)
        .success(function (response) {
            if (response === parseInt(response, 10)) {
                alert("That query had no results");
                $("#dialog").dialog("close");
            }                
            else {
                var blob = new Blob([response], { type: "application/vnd.ms-excel" });
                var objectUrl = URL.createObjectURL(blob);
                $("#dialog").dialog("close");
                window.location = objectUrl;
            }            
        });

该文件正在下载正常但是当我打开它时,我得到一个"文件格式错误的消息"来自excel。我知道excel文件没问题,因为:

window.location = service

工作得很好。

我试过了两个:

application/vnd.ms-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

文件类型。两者都不起作用。提前谢谢。

编辑:我想也许我需要获得原始响应(对于这个有角度的$ http服务),所以我尝试了:

http.get(service, {
            transformResponse:
                function (d, h) {
                    return d;
                }
        })
        .success(function (response) {
            ..same as above         
        });

仍然没有工作。事实上,我在d上设置了一个断点,它看起来像很多未被识别的"字符被更改为问号(我将d与我的网络标签进行了比较。)在网络标签中,字符是单向的,但当我检查d时,它们已被更改为问号。

1 个答案:

答案 0 :(得分:0)

$http.get返回的响应是包含标题的对象,您无法直接从中生成blob。您可以访问服务返回的二进制内容,如下所示:

var blob = new Blob([response.data], { type: "application/vnd.ms-excel" });