zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 5316——Magician——————【线段树区间合并区间最值】
    HDU 5318——The Goddess Of The Moon——————【矩阵快速幂】
    BNU 28887——A Simple Tree Problem——————【将多子树转化成线段树+区间更新】
    BNU 20860——Forwarding Emails——————【强连通图缩点+记忆化搜索】
    日期
    HDU 5313——Bipartite Graph——————【二分图+dp+bitset优化】
    HDU 5288——OO’s Sequence——————【技巧题】
    c++ 中. 和 ->,波浪号 ~ 符号怎么用 ————很重要
    c++缓冲区std::wstringbuf
    Arduino读取写入电压值
  • 原文地址:https://www.cnblogs.com/ylz8401/p/13156003.html
Copyright © 2011-2022 走看看