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)

    
    
  • 相关阅读:
    I.MX6 Surfaceflinger 机制
    理解 Android Fragment
    RPi 2B DDNS 动态域名
    RPi 2B IPC webcam server
    理解 Android MVP 开发模式
    I.MX6 system.img unpack repack
    can't set android permissions
    VMware Ubuntu 共享文件夹
    解决oracle数据库连接不上的问题
    perfect-scrollbar示例
  • 原文地址:https://www.cnblogs.com/wdw31210/p/14134521.html
Copyright © 2011-2022 走看看