angularJS的文件下載


一. 使用window.location.href+url的方式
  這種方式可以獲取到要下載的文件,但是當下載的文件不存在,或者下載過程中后台報錯的話會發生跳轉

二. 使用$http實現異步無刷新的下載文件(1)

$http({
    method : "post",
    url : Constant.prefixUrl+"/customerQueryCount/exportMonthReport",
    timeout : Constant.timeout,
    responseType: "blob"   //注意此參數
}).success(function(data, status, headers, config){
    var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});  
    if(blob.size()>0){
        var fileName = $rootScope.currentAdminUserId +""+ (new Date()).getTime();
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.download = fileName;
        a.href = URL.createObjectURL(blob);
        a.click();
    }else{
        deferred.resolve("下載報表失敗");
    }
}).error(function(data, status, headers, config){
    commonService.goLoginPage(status);
});

//-----------------------------------------
// 創建a標簽模擬下載
function exportExcel(params, filename) {
    return $http({
        url: '/api/exportExcel',
        method: "POST",
        headers: {
          'Content-type': 'application/json'
        },
        params: params,
        responseType: 'arraybuffer'
    }).success(function (data) {
        var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
        var objectUrl = URL.createObjectURL(blob);
        var a = document.createElement('a');
        document.body.appendChild(a);
        a.setAttribute('style', 'display:none');
        a.setAttribute('href', objectUrl);
        a.setAttribute('download', filename);
        a.click();
        URL.revokeObjectURL(objectUrl);
    });
}


三. 使用$http實現異步無刷新的下載文件(2)    -----存在缺陷,如果用戶禁用瀏覽器的window.open將不能實現文件的下載

$http({
    method : "post",
    url : Constant.prefixUrl+"/customerQueryCount/exportMonthReport",
    timeout : Constant.timeout,
    responseType: "arraybuffer" //注意此參數
}).success(function(data, status, headers, config){
    var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
    var objectUrl = URL.createObjectURL(blob);
    window.open(objectUrl);
}).error(function(data, status, headers, config){
    commonService.goLoginPage(status);
});

 

 

轉自:

https://blog.csdn.net/after_you/article/details/78085774?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://www.jb51.net/article/133511.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM