PHPExcel导出返回路径问题(前后端分离前端必须获取信息)

博客围绕PHPExcel文档导出展开,指出原导出写法用header直接下载且无返回值。修改后注释header,将文件save到指定路径。为避免文件覆盖,以日期建文件夹,在其下以时分秒新建文件,还提及了删除方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHPExcel文档中  导出的写法是使用header直接下载后就退出方法了  并没有返回值

原代码是这样的:(可看我上篇博客)


$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");
header('Content-Disposition: attachment;filename="表单数据.xlsx"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件

修改后这样:

$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");
// header('Content-Disposition: attachment;filename="表单数据.xlsx"');
// header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件
$PHPWriter->save('./uploads/test.xlsl'); //表示在$path路径下面生成.xlsx文件

主要是注释掉header不让他下载  然后save到你自己要保存上传到的路径上,这样写死 test.xlsl上传会覆盖,所以可以改动一下:

 以日期新建一个文件夹,方便后期删除,在文件夹下以时分秒新建文件

//新建当日日期文件夹
$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()).'.xlsx';
//将文件上传到文件夹
$PHPWriter->save($dir.'/'.$title); //表示在$path路径下面生成.xlsx文件
$url = $_SERVER['SERVER_NAME'].'/uploads/'.date("Ymd",time()).'/'.$title;
$data = [];
$data = ["url"=> $url];
return json(["code"=>200,"data"=>$data,'msg'=>'请求成功']);

 

 删除的方法是:

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);
                        }
                    }
                }
            }
        }
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值