Angularjs 如何使用http下载angular js中的二进制文件

Angularjs 如何使用http下载angular js中的二进制文件,angularjs,Angularjs,我想使用$http下载LAOD exe文件,它在我控制台数据时显示给我,但我无法下载它 $http({ url: url, method: "GET", headers: { 'Content-type': 'application/json' } }).success(function (data, status, headers, config) { console.log(data

我想使用$http下载LAOD exe文件,它在我控制台数据时显示给我,但我无法下载它

$http({
        url: url,
        method: "GET",
        headers: {
           'Content-type': 'application/json'
        }
    }).success(function (data, status, headers, config) {
        console.log(data);

        window.open(objectUrl);
    }).error(function (data, status, headers, config) {
        //upload failed
    });

任何帮助都将不胜感激。

您可以使用响应类型,如responseType:“arraybuffer”

使用Blob和pass类型“application/binary”,并创建一个链接来下载它

$http({
        url: url,
        method: "GET",
        headers: {
           'Content-type': 'application/json'
        }
    }).success(function (data, status, headers, config) {
        console.log(data);

        window.open(objectUrl);
    }).error(function (data, status, headers, config) {
        //upload failed
    });
给定的代码将帮助您下载exe文件以及检查 浏览器兼容性


如果我的文件太大怎么办?当我们使用blob时,它会被加载到浏览器内存中吗?为什么不直接作为blob得到响应呢?e、 g.
响应类型:“blob”
->
var ieEDGE = navigator.userAgent.match(/Edge/g);
var ie = navigator.userAgent.match(/.NET/g); // IE 11+
var oldIE = navigator.userAgent.match(/MSIE/g); 

var blob = new window.Blob([data.data], { type: 'application/x-msdownload' });

if (ie || oldIE || ieEDGE) {

    var fileName="filename"+'.exe';
    window.navigator.msSaveBlob(blob, fileName);
}
else {

    var file = new Blob([ data.data ], {
        type : 'application/x-msdownload'
    });

    var fileURL = URL.createObjectURL(file);
    var a         = document.createElement('a');
    a.href        = fileURL; 
    a.target      = '_blank';
    a.download    = "filename"+'.exe';
    document.body.appendChild(a);

    a.click();

}
//Successfully Downloaded