当前位置:首页 > PHP教程 > php高级应用 > 列表

直击PHP使用ajax的post方式下载excel文件简单示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-22 09:29:06 浏览: 评论:0 

本文实例讲述了PHP使用ajax的post方式下载excel文件,分享给大家供大家参考,具体如下:

项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token验证信息,参考了很多文章,最终实现如下:

PHP后端使用base64:

  1. $filename = 'demo.xlsx'
  2.  
  3. $objWriter = \PHPExcel_IOFactory::createWriter($objectPHPExcel'Excel2007'); 
  4.  
  5. ob_start(); 
  6.  
  7. $objWriter->save("php://output"); 
  8.  
  9. $xlsData = ob_get_contents(); 
  10.  
  11. ob_end_clean(); 
  12.  
  13. return Api::success(['filename' => $filename'file' => "data:application/vnd.ms-excel;base64," . base64_encode($xlsData)]); 

JS前端:

  1. $('.download').click(function(){ 
  2.  
  3.     var url = "http://xxxx.com/group/bi/export"
  4.  
  5.     var params = { 
  6.  
  7.       from_date: '2017-09-01'
  8.  
  9.       to_date: '2017-09-08'
  10.  
  11.       group_id: 1 
  12.  
  13.     }; 
  14.  
  15.     $.ajax({ 
  16.  
  17.       type:'POST'
  18.  
  19.       url: url, 
  20.  
  21.       data: params, 
  22.  
  23.       beforeSend: function(request) { 
  24.  
  25.         request.setRequestHeader("Authorization""token信息,验证身份"); 
  26.  
  27.       }, 
  28.  
  29.       success: function(redata) { 
  30.  
  31.         // 创建a标签,设置属性,并触发点击下载 
  32.  
  33.         var $a = $("<a>"); 
  34.  
  35.         $a.attr("href", redata.data.file); 
  36.  
  37.         $a.attr("download", redata.data.filename); 
  38.  
  39.         $("body").append($a); 
  40.  
  41.         $a[0].click(); 
  42.  
  43.         $a.remove(); 
  44.  
  45.       } 
  46.  
  47.     }); 
  48.  
  49. });

Tags: ajax下载excel文件

分享到: