zoukankan      html  css  js  c++  java
  • php前后端分离导出excel问题

    1、原始方案,直接浏览器输出下载【卒】

      $xlsWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    //        ob_end_clean();//清除缓冲区,避免乱码
    //        header('Content-Type: application/vnd.ms-excel');
    //        header('Content-Disposition: attachment;filename="订单列表.xls"');
    //$xlsWriter->save('test.xls');

      

    2、改成先存服务器磁盘,定期删除,返回url给前端

    //新建当日日期文件夹
            $dir = iconv("UTF-8", "GBK", "./uploads/".date("Ymd",time()));
            if (!file_exists($dir)){
                mkdir($dir,0777,true);
            };
    //删除昨日日期文件夹下.xlsx文件
            $folderpath = './uploads/'.date("Ymd",strtotime("-1 day"));//要操作的目录
            $this->deldir($folderpath);
            $title = date("His",time()).'.xls';
    //将文件上传到文件夹
            $xlsWriter->save($dir.'/'.$title); //表示在$path路径下面生成.xlsx文件
            $url = $_SERVER['SERVER_NAME'].'/uploads/'.date("Ymd",time()).'/'.$title;
            $data['url'] = $url;
            return resultArray(['data' => $data]);



    private function deldir($path){
    //如果是目录则继续
    if(is_dir($path)){
    //扫描一个文件夹内的所有文件夹和文件并返回数组
    $p = scandir($path);
    foreach($p as $val){
    //排除目录中的.和..
    if($val !="." && $val !=".."){
    //如果是目录则递归子目录,继续操作
    if(is_dir($path.$val)){
    //子目录中操作删除文件夹和文件
    deldir($path.$val.'/');
    //目录清空后删除空文件夹
    @rmdir($path.$val.'/');
    }else{
    //如果是.xlsx文件直接删除
    $result = glob($path.'/*.xlsx');
    foreach($result as $file){
    unlink($file);
    }
    }
    }
    }
    }
    }

      

    前端下载

    window.open('https://'+res.data.url)

    
    
  • 相关阅读:
    nodejs创建路由
    node,js 使用express 生成站点的命令
    Ajax异步同步原理
    jquery问题总结
    JS正则表达式
    幻灯片缓冲效果
    转:offsetParent的理解
    微信小程序左右滑动切换页面示例代码--转载
    python正则表达式
    Django笔记(番外):虚拟环境
  • 原文地址:https://www.cnblogs.com/wdw31210/p/14134521.html
Copyright © 2011-2022 走看看