前言
常用的导出工具都是get请求方式,直接生成文件,那么在查询条件过多时,使用get方式,在url中传递参数,很显然不太合适,那么我们就要考虑通过POST传递参数
具体实现
1、采用PhpOffice/PHPExcel导出文件
2、主要就是生成文件部分,可以看到,是通过base64方式将文件传到前端,再由前端下载文件
if (IS_POST){
ob_start();
$objWriter->save("php://output");
$xlsData = ob_get_contents();
ob_end_clean();
$this->ajaxReturn(['filename' => $filename, 'file' => "data:application/vnd.ms-excel;base64," . base64_encode($xlsData)]);
} else {
$objWriter->save("php://output");
}
3、前端代码示例,可以传递post参数:
function f() {
var url = '';
var params = {
from_date: '2017-09-01',
to_date: '2017-09-08',
group_id: 1
};
$.ajax({
type:'POST',
url: url,
data: params,
success: function(redata) {
// 创建a标签,设置属性,并触发点击下载
var $a = $("<a>"); $a.attr("href", redata.file);
$a.attr("download", redata.filename);
$("body").append($a);
$a[0].click();
$a.remove();
}
});
}