POST 方式请求php导出Excel

前言

常用的导出工具都是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.attr("href", redata.file);
            $a.attr("download", redata.filename);
            $("body").append($a);
            $a[0].click();
            $a.remove();
        }
    });
}

你可能感兴趣的:(php,html,php,前端)