Thinkphp5.*+AJAX导出
由于项目需要,导出只能使用ajax无刷新导出,关于ajax导出的详细代码做一个展示,由于项目时间紧急,没来得及封装,如果有更好的方式请在评论中留言,我会及时改正,代码质量问题大胆提出,我会加以改正,上代码!
jquery:
$.post(options.extend.download_url,{'type':ids},function (msg) {
if (msg.code==1){
// 请求回来的文件进行导出
window.location.href = msg.path;
//删除导出文件
$.post('Tools/del_file',{'path':msg.delpath},function (msg) {
// TOOL你的逻辑代码
});
}
});
PHP:
<?php
namespace app\admin\controller;
use think\Controller;
use think\Request;
use think\Db;
/**
* 工具类
* @author Liu-yuanhang
* Class Tools
* @package app\admin\controller
*/
class Tools
{
// 自定义配置参数
protected $setting=[];
// 导出参数
protected $exportsSetting=[];
public function __construct ($setting=[],$exportsSetting=[]){
$this->setting = $setting;
$this->exportsSetting = $exportsSetting;
}
/**
* AJAX导出
* @param string $expTitle 表格标题
* @param string $expFileName 导出文件名
* @param string $expFileType 导出文件后缀:xls,csv
* @param array $expHeadArr 导出文件列名
* @param array $expDataList 导出数据
* @author Liu-Yuanhang
* @return string|string[]
* @throws \PHPExcel_Exception
* @throws \PHPExcel_Reader_Exception
* @throws \PHPExcel_Writer_Exception
*/
static function ajax_excel_prot($expFileName,$expDataList,$expHeadArr,$expFileType='xlsx'){
$time = date('YmdHis',time());
$expFileName .= "_".$time.".".$expFileType;
//设置保存路径
$basePath = request()->env('ROOT_PATH').