我正在尝试在下载空文件时向用户发送警报(在这种情况下,服务器会将号码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
时,它们已被更改为问号。
答案 0 :(得分:0)
$http.get
返回的响应是包含标题的对象,您无法直接从中生成blob。您可以访问服务返回的二进制内容,如下所示:
var blob = new Blob([response.data], { type: "application/vnd.ms-excel" });