博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax导出excel文件并增加等待动画效果
阅读量:5061 次
发布时间:2019-06-12

本文共 4260 字,大约阅读时间需要 14 分钟。

html:

  <button class="btn btn-default" οnclick="logToExcel('{:url('userLogToExcel',['day' => '3'])}')">3天日志导出</button>

js:

function logToExcel(url){
$('.masking').show(); $.ajax({
url:url, type:"post", processData : false, contentType : false , success:function (data) {
if(data.result){
var form=$("
");//定义一个form表单 form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action",data.data);//请求地址 $("body").append(form);//将表单放置在web中 //传递参数 var input1 = $("
"); input1.attr("type", "hidden"); input1.attr("name", "fileName"); input1.attr("value", data.fileName); form.append(input1); var input2 = $("
"); input2.attr("type", "hidden"); input2.attr("name", "fileDir"); input2.attr("value", data.fileDir); form.append(input2); form.submit().remove();//表单提交 $('.masking').hide(); }else{
alert(data.msg); } } }) } php:
/**  * 用户操作日志导出Excel表  * @internal param int $day 导出日志时间  * @return \think\response\Json  * @reviewer  */ public function userLogToExcel(){
set_time_limit(0); $time = date('Y-m-d',time()); $fileName = 'userlog-' . $time; $day = Request::instance()->param('day'); //$day = input('day'); if ($day == '7'){
$start_time = strtotime('-7 day'); }else{
$start_time = strtotime('-3 day'); } $startTime = date('Y-m-d',$start_time); $endTime = date('Y-m-d H:i:s',time()); $userID = ''; $firstRow = ''; $listRows = ''; $logUser = new UserLog(); $list = $logUser->getLogList($userID,$startTime,$endTime,$firstRow, $listRows); $listID = array(); foreach ($list as $k => $v){
$listID[$k] = $v['user_id']; } $listId = array_unique($listID); $userDetail = new UserInfo(); $userData = $userDetail->getUserInfo($listId); $userInfo = []; foreach ($userData as $key => $value){
$userInfo[$value['user_id']] = $value; } $taskData = []; foreach ($list as $k => $v){
$taskData[$k] = [ $k+1, $userInfo[$v['user_id']]['user_name'], $userInfo[$v['user_id']]['real_name'], $v['log_info'], $v['log_ip'], $v['log_area'], $v['log_url'], $v['log_time'], ]; } $taskNewData = ['序号', '用户名', '真实名', '操作信息', 'ip地址', '登陆地', '操作url','操作时间']; array_unshift($taskData, $taskNewData); $filePath = ROOT_PATH . 'public' . DS . 'static' . DS . 'file' . DS . 'tmp' . DS; try{
Excel::generateExcel($fileName, $taskData, false, $filePath); }catch (\Exception $e){
return json(['result' => false, 'msg' => '日志导出失败']); } return json(['result' => true, 'fileName' => $fileName.'.xlsx', 'fileDir' => $filePath, 'data' => '/admin/log_user/sendFile']); } /** * 将服务器文件发送到浏览器 * @internal param $fileDir 文件路径 * @internal param $fileName 文件名称 * @return Excel */ public function sendFile() {
$fileDir = Request::instance()->param('fileDir'); $fileName = Request::instance()->param('fileName'); $fileName = iconv('gbk','utf-8', $fileName); //检查文件是否存在 if (!file_exists($fileDir . $fileName)) {
echo "
"; echo "文件不存在"; exit(); } else {
//打开文件 $file = fopen($fileDir . $fileName, "r"); //输入文件标签 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length: " . filesize($fileDir . $fileName)); Header("Content-Disposition: attachment; filename=" . $fileName); //输出文件内容 //读取文件内容并直接输出到浏览器 echo fread($file, filesize($fileDir . $fileName)); fclose($file); exit(); } }
 

转载于:https://www.cnblogs.com/zzeng347/p/8046674.html

你可能感兴趣的文章
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
Kubernetes 运维学习笔记
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
枚举的使用
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
日志框架--(一)基础篇
查看>>
关于源程序到可运行程序的过程
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
【贪心+DFS】D. Field expansion
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>