最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS基于http請(qǐng)求實(shí)現(xiàn)下載php生成的excel文件功能示例

 更新時(shí)間:2018年01月23日 14:33:03   作者:重口味AC  
這篇文章主要介紹了AngularJS基于http請(qǐng)求實(shí)現(xiàn)下載php生成的excel文件功能,結(jié)合實(shí)例形式分析了AngularJS http請(qǐng)求及文件下載等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了AngularJS基于http請(qǐng)求實(shí)現(xiàn)下載php生成的excel文件功能。分享給大家供大家參考,具體如下:

使用PHPExcel插件的同學(xué)們都知道,導(dǎo)出excel是直接將生成內(nèi)容修改content-type來(lái)將內(nèi)容作為文件下載的,這時(shí)候需要頁(yè)面上有一個(gè)url,通過(guò)點(diǎn)擊來(lái)下載。

那么問(wèn)題來(lái)了,如果在生成excel時(shí)有請(qǐng)求參數(shù),只能通過(guò)js的http請(qǐng)求,這時(shí)候怎么下載呢?

研究了一下,有以下幾種方式:

1. angularjs創(chuàng)建a標(biāo)簽?zāi)M下載

// 創(chuàng)建a標(biāo)簽?zāi)M下載
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);
  });
}

這個(gè)方式中要注意,如果傳輸?shù)氖莤ls,也就是excel5文件,type要設(shè)置為application/vnd.ms-excelapplication/x-excel

2. js將請(qǐng)求參數(shù)生成url,創(chuàng)建a標(biāo)簽

// 生成下載url
$scope.data.down_url = "../c_potential/get_excel?end_time="+$scope.end_date+"&liable="+liable+"&nickname="+$scope.data.nickname+"&province="+$scope.data.province_cur+"&start_time="+$scope.start_date;

然后將url綁定到某個(gè)a標(biāo)簽中,這種方式適合參數(shù)較少的情況,而且數(shù)據(jù)不會(huì)經(jīng)過(guò)二次處理,不易發(fā)生error,唯一的缺點(diǎn)是需要處理兩次,可以設(shè)置兩個(gè)按鈕,一個(gè)為生成,將參數(shù)寫(xiě)入url中,第二個(gè)按鈕為下載excel。雖然用戶是兩次操作,但實(shí)際上只發(fā)生了一次http請(qǐng)求,不會(huì)影響性能。

3. 先生成后下載

第三種方式類似第二種,首先生成excel文件,儲(chǔ)存到服務(wù)器,然后下載。涉及到磁盤(pán)IO,所以性能比較低,不推薦這種方式,只是作為一個(gè)方法記錄下來(lái)。

angularjs模擬下載的方式最方便,但有可能出現(xiàn)error,第二種方式最保險(xiǎn)。

更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門(mén)與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)

希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

平遥县| 武强县| 慈利县| 曲沃县| 重庆市| 祁阳县| 华容县| 正蓝旗| 营口市| 北宁市| 平泉县| 林西县| 铜陵市| 星子县| 池州市| 长海县| 兴仁县| 拜城县| 通山县| 鄄城县| 义马市| 濮阳县| 南平市| 大庆市| 英吉沙县| 盖州市| 呼图壁县| 鹤山市| 乌恰县| 泸州市| 齐齐哈尔市| 祁东县| 仙居县| 普洱| 上高县| 丹东市| 古丈县| 伊宁县| 牡丹江市| 普兰县| 大丰市|